
    Wh:                    F!   d 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m	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 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" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZc d Zdd Zeej                  j                  dej                  j                  d       ej                  ddd       g      d!        Zid" Zjd# Zkd$ Zlej                  j                  d%ej                  d&fej                  d'fej                  d&fg      ej                  j                  d(ej                  ej                  g      d)               Zqej                  j                  d*ej                  d+d,d-fej                  dd,d.fej                  d/d,d0fej                  dd'd.fej                  d+d,d1fej                  dd,d2fej                  d3d,d4fej                  d+d5d6fej                  d+d7d1fg	      ej                  j                  d(ej                  ej                  g      d8               Zrej                  j                  d9g d:      ej                  j                  d(ej                  ej                  g      d;               Zsd< Ztej                  j                  d= ej                  d7ej                  gg      d>f ej                  d7ej                  gg      d>f ej                  d7ej                  gg      d?f ej                  d7ej                  ggev@      dAfg      ej                  j                  dBd,d&g      dC               ZwdD Zxej                  j                  dE      dF        Zzej                  j                  ddGdHgdIdJgg ej                  dGdHgdIdJggdK@       ej                  dGdHgdIdJggdL@      dMdNgdOdPgg ej                  dMdNgdOdPggdQ@      g      dR        Z{ej                  j                  dSg dT      ej                  j                  dUej                  ej                  gej                  fej                  ej                  fdVej                  fg      dW               Z~dX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Z ej                  g d_`      da        Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zej                  j                  dl ed      eegg dmn      do        Zdp Zej                  j                  dq e2       e1n      dr        Zds Zdt Zdu Zej                  j                  dvej                  ej                  fej                  ddVf      ej                  j                  dwdx      dy               Zdz Zd{ Z G d| d}      Z G d~ d      Zd Zej                  j                  dd,d&g      d        Zej                  j                  dd edddd,i      dd,dfd edddd,i      dd,dfd edddd,i      gdgd,dfd edddd,i      dgd,dfd edddd,i      ddefd edddd,i      ddefgg dn      d        Zej                  j                  d(ej                  ej                  ejJ                  ejL                  ejN                  ejP                  ejR                  ejT                  g      d        Zd Zd Zej                  j                  dg d      d        Zej                  j                  dd7deddd ed      fddejb                  ddd ed      fddejd                  ddd ed      fd7deefddd ed      fd7deddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fg      d        Zd ej                  d7dg      dd+f ej                  d7dg       ej                  d7dg      dd+fd ej                  ddg      edfd ej                  ddg      ed+f ej                  d7dgej                  @       ej                  d7dgej                  @      edf ej                  d7dgej                  @       ej                  d7dgej                  @      edfd ej                  ddg      edfdZej                  j                  d eejo                                eejq                               n      ej                  j                  dd,d&g      d               Zdedfdedfdedf ej                  ddgej                  @      edf ej                  ddgej                  @      edfdȜZej                  j                  d eejo                                eejq                               n      dʄ        Zd˄ Zej                  j                  dej                  ej                  ejJ                  g      d̈́        Zej                  j                  dej                  ej                  ejJ                  g      d΄        Zej                  j                  dej                  ejJ                  g      dτ        ZdЄ Zdф Zd҄ Zej                  j                  ddd7dgg      dՄ        Zej                  j                  dg dע      d؄        Zej                  j                  dg dڢ      dۄ        Zej                  j                  dddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fg      d        Zej                  j                  dg d      d        Zej                  j                  dg dg dg dg dd d7iddiddiggg dn      ej                  j                  dg d      d               Zej                  j                  dg dg dn      d        Zej                  j                  d	 e ed             ed      dd dgdd
gggg dn      d        Zΐd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zѐd ZҐd Zej                  j                  dded   d   fded   d   fded   d   fg      d        ZԐd ZՐd Zej                  j                  dd d7gdfdd dggdfgd d!gn      d"        Z G d# d$e      Zؐd% Zِd& Zڐd' Zej                  j                  d(g d)      d*        Zܐd+ Zݐd, Zej                  j                  d-dd7dd7dej                  gg d.g      d/        Ze?d0        Zej                  j                  d1g d2      ej                  j                  d3d,d&g      d4               Zd5 Zej                  j                  d6eEeDz   eCz   eFz         ej                  j                  d7g d8      d9               Zej                  j                  d: ej                  d7       ej                  d      gd7dgddggg      d;        Zd< Zd= Zd> Zd? Zd@ Ze?dA        ZdB Zej                  j                  g dC ej                  d7dgddggd7dgddggg       e       dDf ej                  d7dgddggd7dgddggg      ddEfg      dF        Zy(G  z$Tests for input validation functions    N)product)
itemgetter)NamedTemporaryFile)importorskip)config_context)dependent_packages)BaseEstimator)
make_blobs)RandomForestRegressor)NotFittedErrorPositiveSpectrumWarning)ARDRegression)EstimatorWithFit)KNeighborsClassifier)_sparse_random_matrix)SVR)_safe_indexingas_float_arraycheck_arraycheck_symmetric	check_X_y
deprecated)_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)MockDataFrame_MockEstimatorOnOffPrediction)	SkipTest
TempMemmap_array_api_for_tests_convert_containerassert_allcloseassert_allclose_dense_sparseassert_array_equalcreate_memmap_backed_data'skip_if_array_api_compat_not_configured)_NotAnArray)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDIA_CONTAINERSDOK_CONTAINERS)FLOAT_DTYPES_allclose_dense_sparse_check_feature_names_in_check_method_params_check_psd_eigenvalues_check_response_method_check_sample_weight_check_y_deprecate_positional_args_estimator_has_get_feature_names
_is_fitted_is_pandas_df_is_polars_df_num_features_num_samples_to_object_arrayassert_all_finitecheck_consistent_lengthcheck_is_fittedcheck_memorycheck_non_negativecheck_random_statecheck_scalarcolumn_or_1dhas_fit_parametervalidate_datac                     t        d       t        j                  j                  j                  u sJ t        t        j                        t        j                  j                  j                  u sJ t        j                  j                  d      } t        d      j                  d      | j                  d      k(  sJ t        j                  j                  d      } t        |       | u sJ t        j                  j                  d      } t        d      j                  d      | j                  d      k7  sJ t        j                  t              5  t        d       d d d        y # 1 sw Y   y xY w)N*   d   +   zsome invalid seed)
rB   nprandommtrand_randRandomStaterandintpytestraises
ValueError)rng_42s    ]/var/www/html/jupyter_env/lib/python3.12/site-packages/sklearn/utils/tests/test_validation.pytest_make_rngrV   _   s   d#ryy'7'7'='====bii(BII,<,<,B,BBBBYY""2&Fb!))#.&..2EEEEYY""2&Ff%///YY""2&Fb!))#.&..2EEEE	z	" 0./0 0 0s   E''E0c                     t        j                  dt         j                        } | t        j                  dt         j                        z   } t	        | d      }|j
                  t         j                  k(  sJ | j                  t         j                        } t	        | d      }t	        | d      | usJ |j
                  t         j                  k(  sJ t        t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  g}|D ]=  }| j                  |      } t	        |       }|j
                  t         j                  k(  r=J  | j                  t               } t	        | d      }|j
                  t         j                  k(  sJ t        j                  dt         j                        } t	        | d      | u sJ t        j"                  |       } t        j$                  t	        | d            sJ t'        j(                  t        j                  d            j+                         t-        ddd	
      j+                         g}|D ]G  }t	        |d      }t         j.                  |d<   t        j0                  |      j3                         sGJ  y )N)   
   dtyperY   FcopyT)rX         皙?)densityr   r   )rK   onesint32aranger   r[   float32astypeint64float64boolint8int16uint8uint16uint32objectasfortranarray	isfortransp
csc_matrixtoarrayr   nanisnanany)XX2tested_dtypesr[   matricesMNs          rU   test_as_float_arrayr   q   s   
rxx(A	BIIb))A		&B88rzz!!!	A		%B!%(11188rzz!!!277BHHbhh"))RYYWM &HHUOAxx2::%%%& 	
A		%B88rzz!!! 	bjj)A!%(A---
!A<<qt4555 	biil#++-b"d3;;=H  %14(&&$88A;??$$$%    ry   rY   r^   rY   r^   csrformatc                     t         j                  | d<   t         j                  | d<   t        | d      }t        ||        y )N)r_   r   )      	allow-nanensure_all_finite)rK   rv   r   r"   )ry   X_converteds     rU   test_as_float_array_nanr      s4     ffAdGffAdG kBK a0r   c                     t        j                  d      j                  dd      } t        t	        |       t         j
                        rJ t        t	        t        j                  |             t         j
                        rJ y )N   rX      )rK   re   reshape
isinstancer   matrixrs   rt   ry   s    rU   test_np_matrixr      sZ    
		"a#A.+RYY777.q)9:BIIFFFFr   c                  P   d } t        d      5 }t        j                  |dt        j                        }d|d d  t        t        j
                  | fD ]<  } ||      }d|d d  t        |j                         |j                                d|d d  > 	 d d d        y # 1 sw Y   y xY w)Nc                     t        | d      S )NFr\   )r   )xs    rU   <lambda>ztest_memmap.<locals>.<lambda>   s    nQU3 r   zsklearn-test)prefixrY   rY   )shaper[   r   r   )r   rK   memmaprf   r   asarrayr#   ravel)asflttmpr}   fry   s        rU   test_memmapr      s     4E	>	2 cIIc<!rzz51 	A!AAaDqwwy!'')4AaD			  s   BBB%c                  ~   t        j                  d      } | | j                  fD ]P  }dD ]I  }t        |d|      }|j                  d   sJ t        |d|      }|j                  d   sJ |sD||urIJ  R t        j                  |       } | j                  d d d   | _        | j                  j                  d   rJ y )	N)rY   r_   )TFC)orderr]   C_CONTIGUOUSFF_CONTIGUOUS)rK   rc   Tr   flagsrs   
csr_matrixdata)ry   Ar]   Bs       rU   test_orderingr      s     	AV "! 	"DASt4A77>***ASt4A77>***z!z	"" 	aAVVDbD\AFvv||N++++r   zvalue, ensure_all_finiteFr   retypec                      |t        j                  d      j                  dd      j                  t                    }| |d<   t        ||d      }t        ||       y )Nr   r^   rb   T)r   accept_sparse)rK   re   r   rg   floatr   r"   )valuer   r   ry   	X_checkeds        rU   (test_check_array_ensure_all_finite_validr      sQ     	ryy|##Aq)0078AAdGA1BRVWI I.r   z/value, input_name, ensure_all_finite, match_msg TzInput contains infinityzInput X contains infinitysample_weightz%Input sample_weight contains infinityInput contains NaNzInput X contains NaNyzInput y contains NaNz	allow-infz1ensure_all_finite should be a bool or 'allow-nan'r   c                     |t        j                  d      j                  dd      j                  t         j                              }| |d<   t        j                  t        |      5  t        |||d       d d d        y # 1 sw Y   y xY w)Nr   r^   rb   matchT)
input_namer   r   )	rK   re   r   rg   ri   rQ   rR   rS   r   )r   r   r   	match_msgr   ry   s         rU   *test_check_array_ensure_all_finite_invalidr      sr    . 	ryy|##Aq)00<=AAdG	z	3 
!/		

 
 
s   )BBr   )ry   r   r   c                 (    |t        j                  d      j                  dd      j                  t         j                              }t         j
                  |d<   t               }d|j                  j                   d}t        j                  t        d|  d      5 }t        ||| d	
       d d d        | dk(  r|j                  j                  d   v sJ |j                  j                  d   vsJ | dk(  rt        j                  t        d|  d      5 }t               j                  |t        j                   |j"                  d                d d d        ||j                  j                  d   v sJ y y # 1 sw Y   xY w# 1 sw Y   4xY w)Nr   r^   rb   
aX   does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-valueszInput z contains NaNr   T)	estimatorr   r   ry   r   )rK   re   r   rg   ri   rv   r   	__class____name__rQ   rR   rS   r   r   argsfitrc   r   )r   r   r   r   extended_msgctxs         rU   0test_check_array_links_to_imputer_doc_only_for_Xr      sh    "))A,&&q!,33BJJ?@DDJI
Y  ))* +- 	-  
z6*])K	L 
PS!		

 Ssyy~~a0000399>>!#4444S ]]:vj\-OP 	4TWEIIdBGGDJJqM23	4syy~~a0000 
 
 	4 	4s   E<;F<FFc                  >   t        j                  ddt         j                  ggt              j                  } t        | d d      }| |u sJ t        | d d      }| |u sJ t        j                  t        d      5  t        | d d	       d d d        y # 1 sw Y   y xY w)
NabrZ   r   r[   r   Fr   r   T)	rK   arrayrv   rp   r   r   rQ   rR   rS   )ry   r   s     rU   )test_check_array_ensure_all_finite_objectr   (  s    
3RVV$%V466AAT[II	>>ATUCI	>>	z)=	> ;ATT:; ; ;s   ;BBz
X, err_msgInput contains NaN.z5Input contains infinity or a value too large for.*intrZ   z#cannot convert float NaN to integerr   c                     t        j                  t        |      5  t        | t        |       d d d        y # 1 sw Y   y xY w)Nr   r   )rQ   rR   rS   r   int)ry   err_msgr   s      rU   8test_check_array_ensure_all_finite_object_unsafe_castingr   5  s8    0 
z	1 GAS4EFG G Gs	   8Ac                      t        j                  d      } | j                  g d      }dt        |       d}t        j                  t
        |      5  t        |d       ddd       y# 1 sw Y   yxY w)	z
    Check that we raise a proper error message when passing a Series and we expect a
    2-dimensional container.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27498
    pandasr   r^   rX   z+Expected a 2-dimensional container but got z	 instead.r   T	ensure_2dN)rQ   r   SeriestyperR   rS   r   )pdsermsgs      rU   test_check_array_series_err_msgr   Q  sa     
		X	&B
))I
C7S	{)
LC	z	- )C4() ) )s   A**A3z3ignore:Can't check dok sparse matrix for nan or infc                     ddgddgg} t        j                  |       }t        j                  t              5  t        |       d d d        t        g dd      }|j                  dk(  sJ t        j                  t        d	      5  t        g dd
       d d d        t        j                  t        d	      5  t        dd
       d d d        t        t         d      rht        t        t        j                  |                   }|j                  dk(  r2t        j                  t        d	      5  t        |d
d
       d d d        t        j                  d      j                  ddd      }t        j                  t              5  t        |       d d d        t        |d
       t        j                  d      j                  dd      j                  d      }|j                  d      }|j!                  t"              }|j!                  t$              }||||g}	t        j&                  t"        t$        t        j(                  d t*        t,        g}
g d}d
dg}t/        |	|
||      D ]  \  } }}}t        | |||      }||j0                  |k(  sJ |j0                  | j0                  k(  sJ |dk(  r"|j2                  d   sJ |j2                  d   r)J |dk(  r"|j2                  d   sJ |j2                  d   rJ |r| |urJ | j0                  |j0                  k(  s|j2                  d   | j2                  d   k(  s|j2                  d   | j2                  d   k(  s| |u rJ  g }	|	j5                  t6        t8        z   t:        z   t<        z   D cg c]
  } ||       c}       |	j5                  |	d   j!                  t        j>                        |	d   j!                  t        j@                        g       ddgddgg}|
D cg c]  }|t,        us| }}t/        |	|||      D ]  \  } }}}t        | |||      }||j0                  |k(  sJ |j0                  | j0                  k(  sJ | jB                  |v r| jB                  |jB                  k(  sJ |jB                  |d   k(  sJ |r| |urJ | j0                  |j0                  k(  s| jB                  |jB                  k(  s| |u rJ  t        ddgddgg      }tE        |t        jF                        sJ t        j                  t              5  t        |jI                                d d d        t        |jI                         d
       tK        |      }t        |      }tE        |t        jF                        sJ t        ddgddgg      }d}t        j                  t        |	      5  t        |d
dtM                       d d d        y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   FxY w# 1 sw Y   xY w# 1 sw Y   xY wc c}w c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)!Nr   r^   rX   r   )r   r   r^   Fr   z'Expected 2D array, got 1D array insteadr   Tz+Expected 2D array, got scalar array insteadrY   	csr_arrayzExpected 2D input, got)r   r      allow_ndr   r   )r   r   N)r[   r   r]   r   r   r   r   coodokr[   r   r]   z<Negative values in data passed to X in RandomForestRegressorry   )ensure_non_negativer   r   )'rs   r   rQ   rR   	TypeErrorr   ndimrS   hasattrnextiterr   rK   re   r   r]   rg   r   r   rd   rf   rj   rp   r   r[   r   extendr)   r(   r'   r+   rh   ri   r   r   ndarraytolistr&   r   )ry   X_csrX_array
sparse_rowX_ndimX_CX_FX_intX_floatXsdtypesorderscopysr[   r   r]   r   sparse_containeraccept_sparsesdtnon_object_dtypesr   X_dense
X_no_arrayresultX_negr   s                              rU   test_check_arrayr  `  s    Q!QAMM!E	y	! E )u5G<<1	z)R	S /I./ 
z)V	W (B$'( r;$r||A/0
??az1IJ LJddKL YYq\!!!Q*F	z	" F& ))A,

q!
$
)
)#
.C
((3-CJJsOEjjG
sE7	#BhhUBJJdFCFF5ME!(VVU!C &5%e$G	??e+++??agg---C<??>222 ~666c\??>222 ~666I%%% 9??*OON3qww~7NNOON3qww~7NNI~%~+&4 
BII %3%% %	
  S!	
 IIr!u||BHH%r!u||BJJ'?@Aenuen5N '-A&0@AA)0
~u* &%5-  mRVW	??e+++??agg---88}$88y///// ##}Q'7777I%%% ww)//)ahh):J:J.JI~%~'&. Aq6Aq6*+Ggrzz***	z	" %FMMO$%$/ W%J$Ffbjj))) !Q"a)*ELG	z	1 
 $+-		

 
m / /( (L L
 T	
 B6% %
 
se   W1W>9X0XX%X2X7X73X<Y1W;>XXX"%X/<YY1234US   1   2   3   4V1c                     d}t        j                  t        |      5  t        | d       ddd       y# 1 sw Y   yxY w)zmTest that check_array errors when it receives an array of bytes/string
    while a numeric dtype is required.z>dtype='numeric' is not compatible with arrays of bytes/stringsr   numericrZ   NrQ   rR   rS   r   )ry   expected_msgs     rU   test_check_array_numeric_errorr    s7     UL	z	6 (AY'( ( (s   5>pd_dtype)Int8Int16UInt8UInt16Float32Float64zdtype, expected_dtyper  c                    t        j                  d      }| dv rt        j                  dd      }t        j                  dddt        j                  t        j                  gt        j                  t        j                  dd	d
gg dg      j
                  }|j                  || g d      }|d   j                  d      |d<   t        |d|      }t        ||       |j                  |k(  sJ t        |d|      }t        ||       |j                  |k(  sJ d}t        j                  t        |      5  t        |d       d d d        y # 1 sw Y   y xY w)Nr   >   r  r  z1.2
minversionr   r^   rX   r   r   r   )r   r^   rX   r   r_   r   r   c)r[   columnsr$  r   r   )r   r[   Fr   r   Tr   )rQ   r   rK   r   rv   r   	DataFramerg   r   r!   r[   rR   rS   )r  r[   expected_dtyper   X_npry   r   r   s           rU   "test_check_array_pandas_na_supportr)    s'    
		X	&B))  e<88
Q266266	"RVVRVVQ1$=Oa 	
 	T?CAsV]]7#AcFAEJIIt$??n,,,AeDIIt$??n,,,
C	z	- /A./ / /s   7EEc                  4   t        j                  d      } | j                  dd| j                  gd      }d}t        j                  t
        |      5  t        |dd	
       ddd       t        |d	d	
      }t        |ddt        j                  g       |j                  t        j                  k(  sJ t        |d	d	t        j                        }t        |ddt        j                  g       |j                  t        j                  k(  sJ y# 1 sw Y   xY w)z4Check check_array is correct with pd.NA in a series.r   r   r^   Int64rZ   r   r   TF)r   r   N)r   r   r[   )rQ   r   r   NArR   rS   r   r!   rK   rv   r[   ri   rf   )r   X_int64r   X_outs       rU   *test_check_array_panadas_na_support_seriesr/    s    			X	&BiiAruuWi5G
C	z	- FGtuEF 5EJEEAq"&&>*;;"**$$$5EE EAq"&&>*;;"**$$$F Fs   DDc                     t        j                  d      } t        j                  g dg dg dgt        j                        }| j                  |      }t        |      j                  t        j                  k(  sJ t        |t              j                  t        j                  k(  sJ |j                  dt        j                  i      }t        |j                  t        j                  t        j                  t        j                  f       t        |      j                  t        j                  k(  sJ t        |t              j                  t        j                  k(  sJ |j                  dt        j                  i      }t        |      j                  t        j                  k(  sJ t        |t              j                  t        j                  k(  sJ |j                  dt        j                  i      }t        |      j                  t        j                  k(  sJ t        |t              j                  t        j                  k(  sJ |j                  t        j                        }t        |      j                  t        j                  k(  sJ t        |t              j                  t        j                  k(  sJ | j                  d| j                  g d      i      }t        |      j                  t        j                   k(  sJ t        |t              j                  t        j                  k(  sJ y )	Nr   r   r   r_   r      r   	   rZ   r   r^   cat_col)rQ   r   rK   r   rf   r&  r   r[   r,   rg   float16r#   r   rl   ri   Categoricalrh   )r   ry   X_dfcat_dfs       rU   %test_check_array_pandas_dtype_castingr:  4  s7   			X	&B
)Y	2"**EA<<?Dt""bjj000t<066"**DDD;;2::'Dt{{RZZRZZ$HIt""bjj000t<066"**DDD;;288}%Dt""bjj000t<066"**DDD;;2::'Dt""bjj000t<066"**DDD;;rxx Dt""bhh... t<066"**DDD
 \\9bnnY&?@AFv$$000v\288BJJFFFr   c                  B   t        j                  ddgddgddgddgg      } t        |       }t        |      }|j                  | j                  k(  sJ t        |t         j
                        }|j                  t        j                  t         j
                        k(  sJ y )Ng?gffffff?g333333?g      ?g?r`   rZ   )rK   r   r   r   r[   rf   )arrmock_dfchecked_arrs      rU   "test_check_array_on_mock_dataframer?  Y  s    
((S#Jc
S#Jc
C
DCC Gg&K		)))gRZZ8K 4444r   c                      g dg dg dg} t        |       j                  j                  dk(  sJ t        | d      j                  j                  dk(  sJ y )Nr   r1  r2  iFr   )r   r[   kindr   s    rU    test_check_array_dtype_stabilityrC  b  sM    	Iy)Aq>$$+++qE*0055<<<r   c                     g dg dg dg} t        j                  | t         j                        }t        j                  | t         j                        }t	        j
                  |      }t	        j                  |      }t	        j                  |t         j                        }||g}|||g}t        j                         5  t        j                  d       |D ]=  }t        |t         j                  d      }	|	j                  t         j                  k(  r=J  |D ]  }t        |t         j                  t         j                  gd      }	|	j                  t         j                  k(  sJ |	|u sJ t        |t         j                  t         j                  gdd	gd
      }	|	j                  t         j                  k(  sJ |	|urJ  t        |t         j                  t         j                  gdd	gd
      }	|	j                  t         j                  k(  sJ |	|usJ |	j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r1  r2  rZ   errorT)r[   r   r   r   r   F)rK   r   rf   rh   rs   r   rt   rd   warningscatch_warningssimplefilterr   ri   r[   r   )

X_int_list	X_float32r-  X_csr_float32X_csc_float32X_csc_int32integer_datafloat32_datary   r   s
             rU   test_check_array_dtype_warningrP  i  s   Y	2J

:RZZ8Ijj2884GMM),MMM),M--rxx8K[)L}m<L		 	 	" )g& 	1A#ARZZtLI??bjj000	1  	&A#"**bjj1I ??bjj000>!>#zz2::.$en	I ??bjj000A%%%	&   ::rzz* %.	
	 "**,,,---5(((?) ) )s   AH5B+H5A(H55H>c                     ddgddgg} t        j                  |       }t               }d}t        j                  t
        |      5  t        |d       d d d        d	}t        j                  t        |      5  t        ||       d d d        d
}t        j                  t        |      5  t        |g        d d d        t        j                  t        |      5  t        |d       d d d        t        j                  t
        d      5  t        ||g       d d d        y # 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   `xY w# 1 sw Y   y xY w)Nr   r^   rX   r   ziSparse data was passed, but dense data is required. Use '.toarray\(\)' to convert to a dense numpy array.r   Fr   zjParameter 'accept_sparse' should be a string, boolean or list of strings. You provided 'accept_sparse=.*'.z]When providing 'accept_sparse' as a tuple or list, it must contain at least one string value. r   )rs   r   r   rQ   rR   r   r   rS   )ry   r   invalid_typer   s       rU   -test_check_array_accept_sparse_type_exceptionrU    s7   
Q!QAMM!E5L	A  
y	, 0E/0	G  
z	- 7E67	5  
z	- -E,-	z	- -E,-	y	. 9E,89 9%0 07 7- -- -9 9s<   D%8D1+D=E	E%D.1D:=E	EEc                      ddgddgg} t        j                  |       }t        |d       t        |d       t        |dg       t        |d       y )	Nr   r^   rX   r   TrR  r   )r   )rs   r   r   )ry   r   s     rU   +test_check_array_accept_sparse_no_exceptionrW    sL    
Q!QAMM!ET*U+eW-X.r   )r   cscr   bsr)paramsc              #     K   t        j                  dd| j                        }| j                  dk(  rot        |d      r"t	        d |j
                  D              |_        n|j                  j                  d      |_        |j                  j                  d      |_        n@|j                  j                  d      |_	        |j                  j                  d      |_
        | y w)N   rY   r   r   coordsc              3   >   K   | ]  }|j                  d         yw)rh   N)rg   ).0vs     rU   	<genexpr>zX_64bit.<locals>.<genexpr>  s     A1QXXg.As   rh   )rs   rL   paramr   tupler]  rowrg   colindicesindptr)requestry   s     rU   X_64bitri    s     
		"b/A}}1h AAAAH EELL)AEEELL)AEII$$W-	88??7+
Gs   C&C(c                      t        | dd       y )NT)accept_large_sparser   )r   )ri  s    rU   1test_check_array_accept_large_sparse_no_exceptionrl    s    TFr   c                     d}t        j                  t        |      5  t        | dd       d d d        y # 1 sw Y   y xY w)NzbOnly sparse matrices with 32-bit integer indices are accepted. Got int64 indices. Please do reportr   TF)r   rk  r  )ri  r   s     rU   4test_check_array_accept_large_sparse_raise_exceptionrn    sA    	<  
z	- LG4UKL L Ls   6?c                     d} t        j                  t        |       5  t        g g       d d d        d} t        j                  t        |       5  t        g d       d d d        t	        j
                  d      } t        j                  t        |       5  t        dd       d d d        t        j                  d      }t        j                  d	      }d
} t        j                  t        |       5  t        ||d       d d d        t        j                  t        |       5  t        ||dd       d d d        t        j                  d      }t        j                  d      }d} t        j                  t        |       5  t        ||d       d d d        t        j                  t        |       5  t        ||dd       d d d        t        j                  d      j                  dd      }t        j                  d      }d} t        j                  t        |       5  t        ||       d d d        t        j                  d      }t        j                  d      }t        ||d      \  }}t        ||       t        ||       y # 1 sw Y   ex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   xY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w)NzC0 feature\(s\) \(shape=\(1, 0\)\) while a minimum of 1 is required.r   z@0 sample\(s\) \(shape=\(0,\)\) while a minimum of 1 is required.Fr   zgInput should have at least 1 dimension i.e. satisfy `len(x.shape) > 0`, got scalar `array(42)` instead.rH   )r   rY   r   zC1 sample\(s\) \(shape=\(1, 10\)\) while a minimum of 2 is required.r^   )ensure_min_samples)rp  r   r   zD2 feature\(s\) \(shape=\(10, 2\)\) while a minimum of 3 is required.rX   )ensure_min_featuresT)rq  r   r   rY   zD0 feature\(s\) \(shape=\(10, 0\)\) while a minimum of 1 is required.)rY   r      rr  r   )rQ   rR   rS   r   reescaper   rK   rc   r   emptyr   r#   )r   ry   r   r   	y_checkeds        rU   2test_check_array_min_samples_and_features_messagesrw    sU   
PC	z	- RD
 NC	z	- )B%() ))BC 
y	, )B%() 	A

A
PC	z	- .!Q1-.
 
z	- ?!Q1>?
 	A

A
QC	z	- /!QA./
 
z	- >!QA=>
 	B"A
A
QC	z	- !Q 	 A
A$QD9Iyq)$q)$s ) )) ). .
? ?/ /
> > s_   JJJ(3J5%KK6K%K)JJ%(J25J?KKK&)K2c                  l   t        j                  g dg dg      } t        j                  t        d      5  t        |        d d d        g dg dg} t        j                  t        d      5  t        |        d d d        d} t        j                  t        d      5  t        |        d d d        t        j                  g d      t        j                  g d      g} t        j                  t        d      5  t        |        d d d        t        j                  g d      t        j                  g d      f} t        j                  t        d      5  t        |        d d d        t        t        j                  g dg dg            } t        j                  t        d      5  t        |        d d d        t        j                  ddgddgg      } t        j                  t        d      5  t        |        d d d        t        j                  g d      }t        j                  t        d      5  t        |       d d d        y # 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   rx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)	N      ?       @      @      @      @      @       @      @      @      @      @      @zComplex data not supportedr   )ry  r}  r   rz  )rz  r{  r|  r~  r  r  )
rK   r   rQ   rR   rS   r   r   rs   
coo_matrixr3   )ry   r   s     rU   #test_check_array_complex_data_errorr  "  s   
*,DEFA	z)E	F A 
"#;<A	z)E	F A 	=A	z)E	F A 
*	+RXX6N-OPA	z)E	F A 
*	+RXX6N-OPA	z)E	F A 	bhh 8:RSTUA	z)E	F A 	6{QF+,A	z)E	F A
 	ABA	z)E	F  I 
 
 
 
 
 
  s_   I.II+<I8J,J6J<J*II(+I58JJJJ'*J3c                      t        t        d      rJ t        t        d      sJ t        t        d      sJ t        t               d      sJ  G d d      } t        | d      sJ d       y )Nr   c                   *    e Zd Z ed      dd       Zy)@test_has_fit_parameter.<locals>.TestClassWithDeprecatedFitMethodz7Deprecated for the purpose of testing has_fit_parameterNc                      y NrS  )selfry   r   r   s       rU   r   zDtest_has_fit_parameter.<locals>.TestClassWithDeprecatedFitMethod.fitS      r   r  )r   
__module____qualname__r   r   rS  r   rU    TestClassWithDeprecatedFitMethodr  R  s    	M	N	 
O	r   r  z=has_fit_parameter fails for class with deprecated fit method.)rE   r   r   r   )r  s    rU   test_has_fit_parameterr  L  sm     !5GGG2ODDDS/222SUO444 
 =O GOr   c            	         t        j                  ddgddgg      } t        j                  d      }t        j                  ddgddgg      }|t        j                  |      t        j
                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      d}t        j                  t              5  t        |       d d d        |j                         D ]  \  }}t        j                  t               5  t        |       d d d        t        j                  t              5  t        |d       d d d        t        |d      }t        j"                  |      r,|j$                  |k(  sJ t'        |j)                         |        t'        ||         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w)	Nr   r   r^   )denser   r   rX  r   lilrY  T)raise_exceptionF)raise_warning)rK   r   rc   rs   
dok_matrixr   rt   r  
lil_matrix
bsr_matrixrQ   rR   rS   r   itemswarnsUserWarningissparser   r#   ru   )arr_symarr_badarr_asymtest_arrays
arr_formatr<  outputs          rU   test_check_symmetricr  \  s}   hhAA'(GggajGxx!Q!Q()H }}X&}}X&}}X&}}X&}}X&}}X&K 
z	" ! ! ',,. 0
C\\+& 	!C 	!]]:& 	7C6	7 !E:;;v==J...v~~/9vw/0	! !	! 	!	7 	7s$   !G$GGGG	G%	c                       G d dt               } t        j                  t              5  t	         |               d d d        t	         |        j                                y # 1 sw Y   (xY w)Nc                       e Zd Zd Zd Zy)6test_check_is_fitted_with_is_fitted.<locals>.Estimatorc                     d| _         | S )NT)r7   r  kwargss     rU   r   z:test_check_is_fitted_with_is_fitted.<locals>.Estimator.fit  s    "DOKr   c                 6    t        | d      xr | j                  S )Nr7   )r   r7   r  s    rU   __sklearn_is_fitted__zLtest_check_is_fitted_with_is_fitted.<locals>.Estimator.__sklearn_is_fitted__  s    4.B4??Br   N)r   r  r  r   r  rS  r   rU   	Estimatorr    s    		Cr   r  )r	   rQ   rR   r   r?   r   )r  s    rU   #test_check_is_fitted_with_is_fittedr    sN    CM C 
~	& %	$%IKOO%&% %s   A!!A*c                  B     G d dt               } t         |               y)z;Check that check_is_fitted passes for stateless estimators.c                   $     e Zd Zd Z fdZ xZS ):test_check_is_fitted_stateless.<locals>.StatelessEstimatorc                     | S r  rS  r  s     rU   r   z>test_check_is_fitted_stateless.<locals>.StatelessEstimator.fit      Kr   c                 2    t         |          }d|_        |S )NF)super__sklearn_tags__requires_fit)r  tagsr   s     rU   r  zKtest_check_is_fitted_stateless.<locals>.StatelessEstimator.__sklearn_tags__  s    7+-D %DKr   )r   r  r  r   r  __classcell__)r   s   @rU   StatelessEstimatorr    s    		 	r   r  N)r	   r?   )r  s    rU   test_check_is_fitted_statelessr    s    ]  &()r   c                     t        j                  t              5  t        t               d d d        t        j                  t              5  t        d       d d d        t	               } t               }	 t        j                  t              5  t        |        d d d        t        j                  t              5  t        |       d d d        d}d}t        j                  t        |      5  t        | |       d d d        d}d}t        j                  t        |      5  t        ||       d d d         | j                  t                  |j                  t                 t        |       J t        |      J y # 1 sw Y   YxY w# 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   xY w# t        $ r J d       w xY w# 1 sw Y   xY w# 1 sw Y   xY w)	Nr   z&check_is_fitted failed with ValueErrorz!Random message %(name)s, %(name)sz+Random message ARDRegression, ARDRegressionr   )r   z"Another message %(name)s, %(name)szAnother message SVR, SVR)rQ   rR   r   r?   r   r   r   rS   AttributeErrorr   r
   )ardsvrr   r   s       rU   test_check_is_fittedr    s   	y	! '&'	y	!  /C
%C?]]>* 	!C 	!]]>* 	!C 	! .C9E	z	/ &%& /C&E	~U	3 &%& CGGZ\CGGZ\3'''3'''?' ' 	! 	!	! 	! ?>>>u?& &
& &sk   FF4F4 F!F4 :F(F4 -G"GFFF% F4 (F1-F4 4GGGc                      G d dt               } d} |        }t        |ddg      rJ t        j                  t        |      5  t        |ddg       d d d        t        |ddgt              rJ t        j                  t        |      5  t        |ddgt               d d d        t        |ddgt              rJ t        j                  t        |      5  t        |ddgt               d d d        d	|_        t        |ddg      rJ t        j                  t        |      5  t        |ddg       d d d        t        |ddgt              rJ t        j                  t        |      5  t        |ddgt               d d d        t        |ddgt              sJ t        |ddgt               d
|_	        t        |ddg      sJ t        |ddg       t        |ddgt              sJ t        |ddgt               t        |ddgt              sJ t        |ddgt               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   %xY w# 1 sw Y   xY w)Nc                       e Zd Zd Zy)4test_check_is_fitted_attributes.<locals>.MyEstimatorc                     | S r  rS  r  ry   r   s      rU   r   z8test_check_is_fitted_attributes.<locals>.MyEstimator.fit  r  r   N)r   r  r  r   rS  r   rU   MyEstimatorr    s    	r   r  z
not fitteda_b_)
attributesr   )r  
all_or_anyr   r   )
r	   r7   rQ   rR   r   r?   allrx   r  r  )r  r   ests      rU   test_check_is_fitted_attributesr    s1   m  C
-C#4,777	~S	1 6t56#4,3GGG	~S	1 FtEF#4,3GGG	~S	1 FtEF CF#4,777	~S	1 6t56#4,3GGG	~S	1 FtEFctTlsCCCCT4LSACFctTl333CT4L1ctTlsCCCCT4LSActTlsCCCCT4LSA36 6F FF F
6 6F Fs<   H8II,I5I,8IIII),I5wrap)singlelistrc  )idsc                 x   t               }t        j                  t        d      5  t	        | | dg             d d d         |j
                  t                 t	        | | dg             t        j                  t        d      5  t	        | | dg             d d d        y # 1 sw Y   kxY w# 1 sw Y   y xY w)Nzis not fitted yetr   coef_	coef_bad_)r   rQ   rR   r   r?   r   r
   )r  r  s     rU   $test_check_is_fitted_with_attributesr    s     /C	~-@	A .T7)_-. CGGZ\ Cwi) 
~-@	A 2T;-012 2. .2 2s   B$B0$B-0B9c                  x   t        dgdgdgdgdg       t        ddgddgggddgddg       t        dgdt        j                  dg      t        j                  d	             t        j                  t        d
      5  t        ddgdg       ddd       t        j                  t        d      5  t        ddgd       ddd       t        j                  t        d      5  t        ddgt                      ddd       t        j                  t              5  t        ddgt        j                  d             ddd       t        j                  t        d      5  t        ddgt                      ddd       y# 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   hxY w# 1 sw Y   yxY w)zpTest that `check_consistent_length` raises on inconsistent lengths and wrong
    input types trigger TypeErrors.r   r^   rX   r   r_   r   r   )r^   r   r^   inconsistent numbers of samplesr   Nzgot <\w+ 'int'>zgot <\w+ 'object'>Expected sequence or array-like)r>   rK   r   rs   r   rQ   rR   rS   r   rp   r   rS  r   rU   test_check_consistent_lengthr    sw    QC!qcA34aVq!fX.Ac
CQCrxx}bmmF6KL	z)J	K -A,-	y(:	; +A*+	y(=	> 2A12	y	! 5A45 
y(I	J AA(=(?@A A- -+ +2 25 5A As<   >F 1F#F"F$ F0 F	FF!$F-0F9zarray_namespace, device, _c                    t        | |      }t        d      5  t        |j                  g d|      |j                  ddgddgddgg|      g dg dt	        j                  dt
        	      t        j                  d
dgdd
gd
d
gg             t        j                  t        d      5  t        |j                  ddg|      |j                  dg|             ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)zCTest that check_consistent_length works with different array types.Tarray_api_dispatchr   )devicer   r^   rX   r#  rZ   r   r  r   N)r   r   r>   r   rK   rp   rs   r   rQ   rR   rS   )array_namespacer  _xps       rU   &test_check_consistent_length_array_apir    s     
ov	6B	4	0 JJyJ0JJAAA/J?JJf5LL1a&1a&1a&12	
 ]]:-NO 	#

Aq6&
12::qc&:3Q	 	 	 s$   BC:+2C.C:.C7	3C::Dc                      	 dd l } t        j                  g dg dg dg      }| j                  |g d      }t	        |       y # t
        $ r t        d      w xY w)Nr   r   r1  r2  )r   r   r   r%  zPandas not found)r   rK   r   r&  r>   ImportErrorr   )r   ry   r8  s      rU   "test_check_dataframe_fit_attributer  $  sU    +HHiI67||A'8|9% +)**+s   AA Ac                     t        j                  dt         j                  g      } t        j                  t
              5  t        |        d d d        t        j                  d       t        |        t        j                  d       t        j                  t
              5  t        |        d d d        y # 1 sw Y   nxY w# 1 sw Y   y xY w)Nr   T)assume_finiteF)	rK   r   infrQ   rR   rS   r=   sklearn
set_configr   s    rU   test_suppress_validationr  1  s    
!RVVA	z	" !T*aU+	z	" !  
 s   B8#C8CCc                  F   t        d      } t        | j                  g d      d      }t        |t	        j
                  g d             | j                  g d      j                  d      }t        |d d      }t        |t	        j
                  g dt                     y )	Nr   r   Fr   r#  category)r[   r   rZ   )r   r   r   r#   rK   r   rg   rp   )r   resss      rU   test_check_array_seriesr  <  sr    	h	B
bii	*e
<CsBHHY/0 			/"))*5A
atu
5CsBHH_FCDr   r[   
bool_dtype)rj   booleanc                 2   t        d      }|j                  g dg d|j                  g d|      dg d      }t        ||       }|j                  t
        j                  k(  sJ t        j                  g dg d	g d
gt              }t        ||       y )Nr   r   )r   r`    @TFTrZ   )r   r   rj   r  )      ?        r  )       @r`   r  )      @r  r  )
r   r&  r   r   r[   rK   ri   r   r   r"   )r[   r  r   dfr   expected_arrays         rU   'test_check_dataframe_mixed_float_dtypesr  H  s     
h	B	"II1ID	

 ) 
 
B %(E;;"**$$$XX	/?;5N !7r   c                  z   t        d      } | j                  dg di      }t        |d      }|j                  t        j
                  k(  sJ t        |dgdgdgg       | j                  g dg dd	dd
g      }t        |d      }|j                  t        j                  k(  sJ t        |ddgddgddgg       y)z7Check that dataframe with bool return a boolean arrays.r   rj   r  NrZ   TFr   )rj   r   r   r  r  r   r   r^   rX   )r   r&  r   r[   rK   bool_r#   rh   r   r  r   s      rU   #test_check_dataframe_with_only_boolr  f  s    	h	B	v23	4B$'E;;"(("""uvw78 
$Y7 
 
B ),E;;"(("""u1v1v1v67r   c                      t        d      } | j                  d| j                  g dd      i      }t        |d      }|j                  t
        j                  k(  sJ t        |dgdgdgg       y)	zFCheck that dataframe with boolean return a float array with dtype=Noner   rj   r  r  rZ   NTF)r   r&  r   r   r[   rK   ri   r#   r  s      rU   &test_check_dataframe_with_only_booleanr   y  sf    	h	B	vryy)<IyNO	PB$'E;;"**$$$uvw78r   c                       e Zd Zd Zy)DummyMemoryc                     |S r  rS  )r  funcs     rU   cachezDummyMemory.cache  s    r   N)r   r  r  r  rS  r   rU   r  r    s    r   r  c                       e Zd Zy)WrongDummyMemoryNr   r  r  rS  r   rU   r  r    s    r   r  c                    t        | dz        }t        |      }|j                  |k(  sJ t        d       }|j                  J t               }t        |      }||u sJ d}t	        j
                  t        |      5  t        d       d d d        t               }dj                  |      }t	        j
                  t        |      5  t        |       d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)Ncache_directoryzf'memory' should be None, a string or have the same interface as joblib.Memory. Got memory='1' instead.r   r   zg'memory' should be None, a string or have the same interface as joblib.Memory. Got memory='{}' instead.)	strr@   locationr  rQ   rR   rS   r  r   )tmp_pathr
  memorydummyr   s        rU   test_check_memoryr    s    (%667O/*F??o---$F??"""ME% FU??	2  
z	- QE	3396%=  
z	- U   s   <CC'C$'C0r]   c                     t        j                  d      }t        |d      5 }t        ||       }t        j                  ||      |  k(  sJ |j
                  d   | k(  sJ 	 d d d        y # 1 sw Y   y xY w)N)r   r   r	mmap_moder\   	WRITEABLE)rK   rc   r   r   may_share_memoryr   )r]   ry   X_memmapr   s       rU   test_check_array_memmapr    sp    
A	A	% 4t4	""8Y7HEEE{+t3334 4 4s   >A++A4zOestimator_name, estimator_value, delegates, expected_result, expected_exception
estimator_SubEstimatorrS  attribute_presentr   estimators_custom_estimatorno_estimatorattribute_absent)'fitted_estimator_with_default_delegates estimator_with_default_delegates#list_of_estimators_with_estimators_&custom_estimator_with_custom_delegates#no_estimator_with_default_delegates5estimator_with_default_delegates_but_absent_attributec                     |t        d      }nt        d|      } G d d      } |       }t        || |       |r't        j                  |      5   ||       ddd       y ||      |k(  sJ y# 1 sw Y   yxY w)z
    Tests the _estimator_has function by verifying:
    - Functionality with default and custom delegates.
    - Raises ValueError if delegates are missing.
    - Raises AttributeError if the specified attribute is missing.
    Nr  )	delegatesc                       e Zd Zy))test_estimator_has.<locals>.MockEstimatorNr  rS  r   rU   MockEstimatorr)    s    r   r*  )r5   setattrrQ   rR   )estimator_nameestimator_valuer'  expected_resultexpected_exceptioncheckr*  r   s           rU   test_estimator_hasr1    s    J 232iH  	AA~/]]-. 	!H	 	 Qx?***	 	s   	A11A:c                 4   t        j                  g dg dg dg dg      } | |      }t        |d        | ddgddgg      }t        |d       d|d<    | |      }t        j                  t
        d      5  t        |d       d d d        y # 1 sw Y   y xY w)	N)r   r   r   r   )r   r   r   r   r   r   r   rb   z	Negative r   )rK   r   rA   rQ   rR   rS   )r   r   ry   s      rU   test_check_non_negativer3    s     	,lLIJAq	Aq"AA Aq"AdGq	A	z	5 "1b!" " "s   8BBc                  >   t        j                  d      } d }d}t        j                  t        |      5  t        | |       d d d        d}t        j                  t        |      5  t        | |t                      d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nr^   r^   z;estimator requires y to be passed, but the target y is Noner   zGRandomForestRegressor requires y to be passed, but the target y is Noner   )rK   rc   rQ   rR   rS   r   r   ry   r   r   s      rU    test_check_X_y_informative_errorr8  !  s    
AA
GC	z	- !Q TC	z	- ;!Q"7"9:; ;	 ; ;s   B'BBBc                       G d d      }  |        }t        |      t        |      k(  sJ  G d d      }t        j                  t        d      5  t         |              d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)Jtest_retrieve_samples_from_non_standard_shape.<locals>.TestNonNumericShapec                     d| _         y N)znot numericr   r  s    rU   __init__zStest_retrieve_samples_from_non_standard_shape.<locals>.TestNonNumericShape.__init__/  	    )DJr   c                     t        g d      S )Nr   )lenr  s    rU   __len__zRtest_retrieve_samples_from_non_standard_shape.<locals>.TestNonNumericShape.__len__2  s    y>!r   N)r   r  r  r?  rC  rS  r   rU   TestNonNumericShaper;  .  s    	*	"r   rD  c                       e Zd Zd Zy)Jtest_retrieve_samples_from_non_standard_shape.<locals>.TestNoLenWeirdShapec                     d| _         y r=  r>  r  s    rU   r?  zStest_retrieve_samples_from_non_standard_shape.<locals>.TestNoLenWeirdShape.__init__:  r@  r   Nr   r  r  r?  rS  r   rU   TestNoLenWeirdShaperF  9  s    	*r   rI  r  r   )r;   rB  rQ   rR   r   )rD  ry   rI  s      rU   -test_retrieve_samples_from_non_standard_shaperJ  -  sh    " " 	A?c!f$$$* * 
y(I	J ,(*+, , ,s   A**A3r   )r^   rX   g      @r_   c           	          t        j                         5  t        j                  d       t        | dt        j
                  ddd      }ddd       | k(  sJ y# 1 sw Y   xY w)zPTest that check_scalar returns no error/warning if valid inputs are
    providedrE  	test_namer^   r_   bothtarget_typemin_valmax_valinclude_boundariesN)rF  rG  rH  rC   numbersReal)r   scalars     rU   test_check_scalar_validrV  A  sa     
	 	 	" 	
g&%
	
 Q;;	
 	
s   5AA#zJx, target_name, target_type, min_val, max_val, include_boundaries, err_msg
test_name1r   neitherz1test_name1 must be an instance of float, not int.z6test_name1 must be an instance of float, not NoneType.z4test_name1 must be an instance of int, not NoneType.z9test_name1 must be an instance of {float, bool}, not int.
test_name2ztest_name2 == 1, must be > 2.r_   
test_name3ztest_name3 == 5, must be < 4.
test_name4rightztest_name4 == 2, must be > 2.
test_name5leftztest_name5 == 4, must be < 4.
test_name6zbad parameter valuezyUnknown value for `include_boundaries`: 'bad parameter value'. Possible values are: ('left', 'right', 'both', 'neither').
test_name7zT`include_boundaries`='left' without specifying explicitly `min_val` is inconsistent.
test_name8zU`include_boundaries`='right' without specifying explicitly `max_val` is inconsistent.c           	      
   t        j                  t              5 }t        | |||||       ddd       t	        j
                        t	        |      k(  sJ t        |j
                  t        |            sJ y# 1 sw Y   NxY w)zLTest that check_scalar returns the right error if a wrong input is
    givenrN  N)rQ   rR   	ExceptionrC   r  r   r   r   )r   target_namerO  rP  rQ  rR  r   raised_errors           rU   test_check_scalar_invalidrf  R  s{    l 
y	! 
\#1	

 |!!"c'l222l(($w-888
 
s   A99Br  )r_   y        -C6
?zJThere are imaginary parts in eigenvalues \(1e\-05 of the maximum real part)r_   g-C6
gưz?There are negative eigenvalues \(1e\-06 of the maximum positiveg|۽z?There are negative eigenvalues \(1e\-10 of the maximum positive)r_   g-=z=the largest eigenvalue is more than 1e\+12 times the smallest)nominalnominal_np_arrayinsignificant_imagzinsignificant negzinsignificant neg float32zinsignificant neg float64zinsignificant posz(lambdas, expected_lambdas, w_type, w_msgenable_warningsc                 <   |sd }|Et        j                         5  t        j                  dt               t	        | |      }d d d        n-t        j                  ||      5  t	        | |      }d d d        t        |       y # 1 sw Y   xY w# 1 sw Y   "xY w)NrE  )rj  r   )rF  rG  rH  r   r0   rQ   r  r!   )lambdasexpected_lambdasw_typew_msgrj  lambdas_fixeds         rU    test_check_psd_eigenvalues_validrq    s     ~$$& 	!!'+BC2M	 	 \\&. 	2M	
 $m4	 		 	s   (B#BBB)r_   y              @z/There are significant imaginary parts in eigenv)r   z,All eigenvalues are negative \(maximum is -1)r_   r   z*There are significant negative eigenvaluesga2U0*3?ggh㈵>g|)significant_imagzall negativezsignificant negzsignificant neg float32zsignificant neg float64zlambdas, err_type, err_msgc                 r    t        j                  ||      5  t        |        d d d        y # 1 sw Y   y xY w)Nr   )rQ   rR   r0   )rl  err_typer   s      rU   "test_check_psd_eigenvalues_invalidrv  /  s/     
xw	/ (w'( ( (s   -6c                     t        j                  d      d d d   } | j                  d   rJ t        | t        j                  d            } | j                  d   sJ t        d t        j                  d            } t	        | t        j                  d             t        dt        j                  d            } t	        | dt        j                  d      z         t        j                  t        d	
      5  t        t        j                  d      t        j                  d             d d d        d}t        j                  t        |
      5  t        t        j                  d      t        j                  d             d d d        t        j                  d      }t        j                  dt         j                        } t        | |      } | j                  t         j                  k(  sJ t        j                  dt              }t        d ||j                        } | j                  t         j                  k(  sJ t        j                  d      }t        j                  t        |            } d| d<   d}t        j                  t        |
      5  t        | |d       d d d        y # 1 sw Y   xY w# 1 sw Y   ;xY w# 1 sw Y   y xY w)NrY   r^   r   )r_   r   r   )r_   r^   r_   r  z)Sample weights must be 1D array or scalarr   )r^   r   r5  z/sample_weight.shape == \(4,\), expected \(2,\)!r   rZ   ir   z1Negative values in data passed to `sample_weight`T)r   )rK   rc   r   r2   r!   rQ   rR   rS   rf   r[   r   ri   r;   )r   r   ry   r   s       rU   test_check_sample_weightrx  <  s   GGBK!$M"">222("''&/JM~... )AMM2771:. )@MM1rwwqz>2 
z)T	U ARWWV_@A =C	z	- <RWWQZ2776?;< 	AGGARZZ0M(:M"**,,, 	c"A(q@M"**,,, 	AGGLO,MM"AG	z	1 I]A4HI I1A A
< <&I Is$   :4J34K K3J= K
Kru   c                     t        j                  d      j                  dd      } | |       | |      }}t        ||      sJ y )Nr4  rX   rK   re   r   r-   ru   baser   r   s       rU   !test_allclose_dense_sparse_equalsr}  h  s=    99Q<1%D4='$-qA!!Q'''r   c                     t        j                  d      j                  dd      } | |       | |dz         }}t        ||      rJ y )Nr4  rX   r   rz  r{  s       rU   %test_allclose_dense_sparse_not_equalsr  o  sE    99Q<1%D4='$(+qA%a++++r   c                     t        j                  d      j                  dd      } | |dz         }d}t        j                  t
        |      5  t        ||       d d d        y # 1 sw Y   y xY w)Nr4  rX   r   zFCan only compare two sparse matrices, not a sparse matrix and an arrayr   )rK   re   r   rQ   rR   rS   r-   )ru   r   r   r   s       rU    test_allclose_dense_sparse_raiser  v  s[    
		!Q"AAA
RC	z	- %q!$% % %s   A$$A-c                  6   t         dddd       } t        j                  t        d      5   | ddd       d d d        t        j                  t        d      5   | dddd	       d d d        t         ddddd
d       }t        j                  t        d      5   |dd       d d d        t         dddd       }t        j                  t        d      5   |dd       d d d        y # 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)Nr   r$  dc                     y r  rS  r   r   r$  r  s       rU   f1z=test_deprecate_positional_args_warns_for_function.<locals>.f1      r   Pass c=3 as keyword argsr   r^   rX   Pass c=3, d=4 as keyword argsr   )r   r$  r  c                     y r  rS  r  s       rU   f2z=test_deprecate_positional_args_warns_for_function.<locals>.f2  r  r   zPass b=2 as keyword argsc                     y r  rS  r  s       rU   f3z=test_deprecate_positional_args_warns_for_function.<locals>.f3  r  r   )r   r4   rQ   r  FutureWarning)r  r  r  s      rU   1test_deprecate_positional_args_warns_for_functionr    s   1    
m+F	G 
1a 
m+K	L 
1aA  Q!q    
m+F	G 
1a  1    
m+F	G 
1a %    s/   C+C7
D
D+C47D DDc                      t        d      d        } t        j                  t        d      5   | dd       d d d        y # 1 sw Y   y xY w)Nz1.1)versionc                     y r  rS  r   r   s     rU   r  zEtest_deprecate_positional_args_warns_for_function_version.<locals>.f1  r  r   z,From version 1.1 passing these as positionalr   r   r^   r  )r  s    rU   9test_deprecate_positional_args_warns_for_function_versionr    sM    . / 
L
  	1a  s   
AA
c                       G d d      } t        j                  t        d      5   | ddd       d d d        t        j                  t        d      5   | dddd	       d d d         G d
 d      }t        j                  t        d      5   |ddd       d d d        t        j                  t        d      5   |dddd	       d d d        y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   QxY w# 1 sw Y   y xY w)Nc                   $    e Zd Zedddd       Zy):test_deprecate_positional_args_warns_for_class.<locals>.A1r   r  c                     y r  rS  r  r   r   r$  r  s        rU   r?  zCtest_deprecate_positional_args_warns_for_class.<locals>.A1.__init__  r  r   Nr   r  r  r4   r?  rS  r   rU   A1r    s    	#&'1 	 
$	r   r  r  r   r   r^   rX   r  r   c                   &    e Zd Zeddddd       Zy):test_deprecate_positional_args_warns_for_class.<locals>.A2r   r  c                     y r  rS  r  s        rU   r?  zCtest_deprecate_positional_args_warns_for_class.<locals>.A2.__init__  r  r   N)r   r   r  rS  r   rU   A2r    s    	#	!q 	 
$	r   r  )rQ   r  r  )r  r  s     rU   .test_deprecate_positional_args_warns_for_classr    s     
 
m+F	G 
1a 
m+K	L 
1aA 
 
m+F	G 
1a 
m+K	L 
1aA     s/   CCC(;C4CC%(C14C=rf  rX   c                    t         j                  j                  dd      }g dt        j                  g d      t	        j
                  g d      j                  t	        j
                  g d      ddd d}t        |||       }| | n t        t        |j                  d               }d	D ]  }||   ||   u rJ  |d
   t        |d
   |      k(  sJ t        |d   t        |d   |             t        |d   t        |d   |             y )Nr   r^   )r   r^   rX   r   r   xxx)r  r   
sparse-col
sparse-row
scalar-int
scalar-strNone)rZ  rf  r   )r  r  r  r  r  r   r  )rK   rL   randnr   rs   rt   r   r/   r  ranger   r   r#   r"   )rf  ry   _paramsr  indices_keys         rU   test_check_method_paramsr    s    
		1A,'mmL133mmL1G "!GWEF!-w4aggaj8I3JHA +c{gcl***+ &>^GFOXFFFFvgww7G(RS |nW\-BHMr   	sp_format)Tr   rX  r   rY  c                    t        j                  d      }t        dd      }|j                  j                  j                  |      }t        ||       }| du rd} t        j                  |      sJ |j                  | k(  sJ t        ||       y )Nr   rY   rX   rR  Tr   )rQ   r   r   r&  sparsefrom_spmatrixr   rs   r  r   r"   )r  r   sp_matsdfr  s        rU   "test_check_sparse_pandas_sp_formatr    s     
		X	&B"2q)F
,,


+
+F
3CI6FD	;;v==I%%% 0r   zntype1, ntype2)	)
longdoubler6  )r6  rf   )rf   double)rl   rd   )rd   long)bytern   )ushortro   )ro   uint64)rm   rk   c                     t        j                  d      }|j                  |j                  j	                  g d| d      |j                  j	                  g d|d      d      }t        |ddg	       y
)zXCheck that pandas dataframes having sparse extension arrays with mixed dtypes
    works.r   r   r   r   r   r[   
fill_valuer   r   r   col1col2r   rX  rR  N)rQ   r   r&  arraysSparseArrayr   )ntype1ntype2r   r  s       rU   %test_check_pandas_sparse_mixed_dtypesr    si    " 
		X	&B	II)))6a)PII)))6a)P	

B 5%.1r   z ntype1, ntype2, expected_subtyper  r  r  rf   ri   rk   r  shortrl   intcrd   intpr  r   rh   longlongint_ubyterm   rn   r  uintcro   uintr  uintp	ulonglongc                 0   t        j                  d      }|j                  |j                  j	                  g d| d      |j                  j	                  g d|d      d      }t        |ddg	      }t        j                  |j                  |      sJ y )
Nr   r  r   r  r  r  r   rX  rR  )	rQ   r   r&  r  r  r   rK   
issubdtyper[   )r  r  expected_subtyper   r  r<  s         rU   test_check_pandas_sparse_validr    s    . 
		X	&B	II)))6a)PII)))6a)P	

B b
7C==$4555r   constructor_name)r  rc  r   	dataframe
sparse_csr
sparse_cscc                 L    g dg dg}t        ||       }t        |      dk(  sJ y)z$Check _num_features for array-likes.r   r1  rX   N)r    r:   )r  ry   s     rU   test_num_featuresr  '  s.     
IA1./Aq   r   r   r#  )FTF)r  g333333@g      @r   r   r$  )r   r  rj   r   dict)r  rc  r   seriesc                 l   t        | |      } |dk(  rd}n
|dk(  rd}n|}d| }t        | d      r|t        j                  d      z  }n1t	        | d   t
              r|d	z  }nt	        | d   t              r|d
z  }t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)Nr   znumpy.ndarrayr  zpandas.*Series5Unable to find the number of features from X of type r   z with shape (3,)r   z" where the samples are of type strz# where the samples are of type dictr   )r    r   rs  rt  r   r  r  rQ   rR   r   r:   )ry   r  expected_type_namemessages       rU   &test_num_features_errors_1d_containersr  2  s     	1./A7",	X	%--
?@R?ST  q'299/00	AaD#	77	AaD$	88	y	0 a  s   B**B3)r   r   Fr  )r   r  rj   r   c                     dt        |       j                   }t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)Nr  r   )r   r  rQ   rR   r   r:   )ry   r   s     rU    test_num_features_errors_scalarsr  S  sD    A$q'BVBVAW
XC	y	, a  s   A		Anamesr  )zlist-intr  default
MultiIndexc                 
   t        j                  d      }|j                  ddgddgddgg|       }t        j                         5  t        j
                  dt               t        |      } d	d	d	       | J y	# 1 sw Y   xY w)
zGet feature names with pandas dataframes without warning.

    Column names with consistent dtypes will not warn, such as int or MultiIndex.
    r   r   r^   r   r_   r   r  rE  N)rQ   r   r&  rF  rG  rH  r  r6   )r  r   ry   s      rU   2test_get_feature_names_pandas_with_ints_no_warningr  Z  s     
		X	&B
q!fq!fq!f-u=A		 	 	" &g}5"1%& ==& &s   &A99Bc                      t        j                  d      } t        d      D cg c]  }d| 	 }}| j                  g dg dg|      }t	        |      }t        ||       yc c}w )z)Get feature names with pandas dataframes.r   rX   col_r   r1  r  N)rQ   r   r  r&  r6   r#   )r   rA  r%  ry   feature_namess        rU   test_get_feature_names_pandasr  m  s_    			X	&B#(8,aaSz,G,
i+W=A&q)M}g.	 -s   A"zconstructor_name, minversion))pyarrowz12.0.0)r  z1.5.0)polarsz0.18.2c                 h    g dg dg}g d}t        || ||      }t        |      }t        ||       y)z:Uses the dataframe exchange protocol to get feature names.r   r   r^   rX   rX   r   )col_0col_1col_2)columns_namer"  N)r    r6   r#   )r  r"  r   r%  r  r  s         rU   )test_get_feature_names_dataframe_protocolr  w  s=     y!D)G	W
B 'r*M}g.r   )r  r  r  c                 f    t        g dg dg|       }| dv rt        |      rJ y t        |      sJ y )Nr  r  )r  r  )r    r8   )r  r  s     rU   !test_is_pandas_df_other_librariesr    s<    	Y	24D	EB00 $$$$R   r   c                      t        j                  d      } | j                  g dg      }t        |      sJ t        t	        j
                  g d            rJ t        d      rJ y)z8Check behavior of is_pandas_df when pandas is installed.r   r   r   N)rQ   r   r&  r8   rK   r   )r   r  s     rU   test_is_pandas_dfr    sX    			X	&B	yk	"BRZZ	2333Qr   c                 b    t        t        j                  g d            rJ t        d      rJ y)z1Check _is_pandas_df when pandas is not installed.r   r   N)r8   rK   r   )hide_available_pandass    rU   &test_is_pandas_df_pandas_not_installedr     s,     RZZ	2333Qr   r  r  r   r  c                 j    t        g dg dg| |      }| dv rt        |      rJ y t        |      sJ y )Nr  r  r!  )r  r  )r    r9   )r  r"  r  s      rU   !test_is_polars_df_other_librariesr    sF     
	I
B
 33 $$$$R   r   c                  @     G d d      }  |        }t        |      rJ y)zACheck _is_polars_df for object that looks like a polars dataframec                       e Zd Zd Zy)Ntest_is_polars_df_for_duck_typed_polars_dataframe.<locals>.NotAPolarsDataFramec                 $    g d| _         d| _        y )Nr   	my_schemar%  schemar  s    rU   r?  zWtest_is_polars_df_for_duck_typed_polars_dataframe.<locals>.NotAPolarsDataFrame.__init__  s    $DL%DKr   NrH  rS  r   rU   NotAPolarsDataFramer    s    	&r   r
  Nr9   )r
  not_a_polars_dfs     rU   1test_is_polars_df_for_duck_typed_polars_dataframer    s'    & &
 *+O_----r   c                  X    t        j                  g dg dg      } t        |       }|J y)z/Get feature names return None for numpy arrays.r   r1  N)rK   r   r6   )ry   r  s     rU   test_get_feature_names_numpyr    s)    
)Y'(Aq!E==r   znames, dtypesz['int', 'str']pizzaz['list', 'str']zint-strzlist-strc                    t        j                  d      }|j                  ddgddgddgg|       }t        j                  d| d	      }t        j
                  t        |
      5  t        |      } ddd       y# 1 sw Y   yxY w)zAGet feature names errors when the feature names have mixed dtypesr   r   r^   r   r_   r   r  z]Feature names are only supported if all input features have string names, but your input has a.   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   N)rQ   r   r&  rs  rt  rR   r   r6   )r  r   r   ry   r   s        rU   %test_get_feature_names_invalid_dtypesr    s     
		X	&B
q!fq!fq!f-u=A
))	$X &?	?C 
y	, &"1%& & &s   &A;;Bc                   "    e Zd ZddZd ZddZy)PassthroughTransformerNc                 "    t        | |d       | S )NT)reset)rF   r  s      rU   r   zPassthroughTransformer.fit  s    dAT*r   c                     |S r  rS  )r  ry   s     rU   	transformz PassthroughTransformer.transform  s    r   c                     t        | |      S r  )r.   )r  input_featuress     rU   get_feature_names_outz,PassthroughTransformer.get_feature_names_out  s    &t^<<r   r  )r   r  r  r   r  r  rS  r   rU   r  r    s    =r   r  c                     t        j                  g dg      } t               j                  |       }|j	                         }t        |g d       ddg}t        j                  t        d      5  |j	                  |       ddd       |`	t        j                  t        d      5  |j	                          ddd       y# 1 sw Y   @xY w# 1 sw Y   yxY w)	z4Check behavior of check_feature_names_in for arrays.r  r  r  )x0x1x2x10r  z*input_features should have length equal tor   Nz Unable to generate feature names)
rK   r   r  r   r  r#   rQ   rR   rS   n_features_in_)ry   r  r  incorrect_len_namess       rU   test_check_feature_names_inr$    s    
/"#A
 
"
&
&q
)C%%'Eu01 $-	z)U	V 7!!"567 		z)K	L $!!#$ $7 7
$ $s   /C &C C	Cc                  V   t        j                  d      } g d}| j                  g dg|      }t               j	                  |      }|j                         }t        |g d       t        j                  t        d      5  |j                  g d       ddd       y# 1 sw Y   yxY w)	z?Check behavior of check_feature_names_in for pandas dataframes.r   r#  r  r  zinput_features is not equal tor   )r  r   x3N)	rQ   r   r&  r  r   r  r#   rR   rS   )r   r  r  r  s       rU   "test_check_feature_names_in_pandasr'    s    			X	&BE	'	7B
 
"
&
&r
*C%%'Euo.	z)I	J 6!!"456 6 6s   BB(c                      d} t        j                  t        |       5  t        t	               d       ddd       y# 1 sw Y   yxY w)z@Check the error message when passing an unknown response method.zKRandomForestRegressor has none of the following attributes: unknown_method.r   unknown_methodN)rQ   rR   r  r1   r   )r   s    rU   )test_check_response_method_unknown_methodr*    sE     	V  
~W	5 J468HIJ J Js	   <Aresponse_method)decision_functionpredict_probapredictc                     d|  d}t        j                  t        |      5  t        t	               |        ddd       y# 1 sw Y   yxY w)zUCheck the error message when a response method is not supported by the
    estimator.z7EstimatorWithFit has none of the following attributes: .r   N)rQ   rR   r  r1   r   )r+  r   s     rU   8test_check_response_method_not_supported_response_methodr1    sO     B/ARRST  
~W	5 D/1?CD D Ds   A  A	c                  l   dg} t        |       }d}ddg}ddj                  |       d}t        j                  t        |      5   t        ||      |       d	d	d	       ddg} t        ||      |      }|dk(  sJ ddg} t        |       }g d
} t        ||      |      }|dk(  sJ y	# 1 sw Y   SxY w)z0Check that we can pass a list of ordered method.r-  mocking_datar,  r.  zD_MockEstimatorOnOffPrediction has none of the following attributes: z, r0  r   N)r,  r.  r-  )r   joinrQ   rR   r  r1   )method_implementedmy_estimatorry   r+  r   method_name_predictings         rU   #test_check_response_method_list_strr8  "  s    )*01CDLA +I6ON99_%
&a	)  
~W	5 A=|_=a@A +O<OR3L/RSTU!_444 *9501CDLGOR3L/RSTU!Y...A As   B**B3c                      t        d      } t        | j                  ddg      d      }t        j                  ddg      }|j
                  |j
                  k(  sJ t        ||       y)zRegression test for gh-25145r   TFr   N)r   r   r   rK   r   r[   r#   )r   r  expecteds      rU   #test_boolean_series_remains_booleanr;  ?  sW    	h	B
biiu.%
@Cxxu&H99&&&sH%r   input_values)r   r   r   r   r   r   c                     t        d      }|j                  | d      }t        |dddd      }t        j                  |j
                  j                  t        j                        sJ t        ||        y)zpCheck pandas array with extensions dtypes returns a numeric ndarray.

    Non-regression test for gh-25637.
    r   Int32rZ   NF)r[   r   r   r   )	r   r   r   rK   r  r[   rB  floatingr!   )r<  r   input_seriesr  s       rU   !test_pandas_array_returns_ndarrayrA  I  sg     
h	B88L88LF ==**BKK888FL)r   c                     t        j                  d      } | j                  | j                  ddgd| j                  dgg| j                        }t        d      5  t        j                  t        d	      5  t        |       d
d
d
       d
d
d
       | j                  | j                  ddgd| j                  dgg| j                        }t        d      5  t        j                  t        d	      5  t        |       d
d
d
       d
d
d
       y
# 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)z9Checks that Array API arrays checks non-finite correctly.array_api_strictr   r   rX   rZ   Tr  r   r   Nzinfinity or a value too large)
rQ   r   r   rv   rf   r   rR   rS   r   r  )r  X_nanX_infs      rU   )test_check_array_array_api_has_non_finiterF  \  s    
		/	0BJJABFFA7rzzJJE	4	0 ]]:-BC 		 JJABFFA7rzzJJE	4	0 ]]:-LM 		 		 	 	 	 sH   D7DDD54D) D5D	DD&)D2	.D55D>zextension_dtype, regular_dtype))r  rj   )r+  rh   )r  ri   )r  rp   include_objectc                 j   t        j                  d      }|j                  |j                  g d|      |j                  g dd      d      }|r|j                  g dd      |d	<   |j	                  |d
   j                  |             }t        |d      }t        |d      }t        ||       y)zKCheck pandas extension arrays give the same result as non-extension arrays.r   )r   r   r   r   rZ   )r4  r   r3  r   rh   )r   r$  r  rp   r   r   )r   N)rQ   r   r&  r   assignrg   r   r#   )extension_dtyperegular_dtyperG  r   	X_regularX_extensionX_regular_checkedX_extension_checkeds           rU   $test_check_array_multiple_extensionsrP  l  s     
		X	&B<}=<w7	
I #7xH	#""Ys^%:%:?%K"LK#IT:%k>(*=>r   c                  ~    t        j                  d      } | j                  g dg dd      }t        |      dk(  sJ y)zDUse the DataFrame interchange protocol to get n_samples from polars.r  r   r1  r  rX   N)rQ   r   r&  r;   )plr  s     rU   #test_num_samples_dataframe_protocolrS    s8    			X	&B	II6	7Bq   r   r   output_format)r   rX  r   c                     | ddgddggt         j                        }t        |d      r/|j                  j	                  t         j
                        |_        nt        |d      r;t        |d      r/|j                  j	                  t         j
                        |_        ntt        |d      rht        |d      r\|j                  j	                  t         j
                        |_        |j                  j	                  t         j
                        |_        t        ||	      }|d
k(  rS|j                  j                  t         j
                  k(  sJ |j                  j                  t         j
                  k(  sJ y|j                  j                  t         j
                  k(  sJ |j                  j                  t         j
                  k(  sJ y)zGCheck the consistency of the indices dtype with sparse matrices/arrays.r   r   rZ   offsetsrd  re  rf  rg  rR  r   N)rK   ri   r   rV  rg   rd   rd  rf  rg  r   r[   re  )r   rT  ry   r   s       rU   1test_check_array_dia_to_int32_indexed_csr_csc_coorW    s?    	1a&1a&)<A q)II$$RXX.		E	wq%0RXX&	I	71h#7II$$RXX.	88??288,A];I}}""bhh...}}""bhh...  &&"((222%%111r   sequencec                     t        |       }t        |t        j                        sJ |j                  j
                  dk(  sJ |j                  dk(  sJ y )NOr   )r<   r   rK   r   r[   rB  r   )rX  outs     rU   test_to_object_arrayr\    sF    
8
$Cc2::&&&99>>S   88q==r   c                     dg dfdg dfdt        j                  d      dz  fdg dfdg d	fdd
gdgdggfdg dg dgfdg dgfdd
d
gddgdd
ggfddd
gddgdd
ggfdg dgfdt        j                  d      j                  d      fg} | D ]_  \  }}|dv r)t        t	        |      t        j
                  |             3t        j                  t              5  t	        |       d d d        a y # 1 sw Y   lxY w)Nbinary)spameggr_  )r   r   r   r   
continuousrY   g      4@
multiclassr   )r   r   r^   r^   r   r   r^   rX   zmultilabel-indicatorr  )r   r   r   zmulticlass-multioutputr_   r   zcontinuous-multioutput   )r   rX   )r^  rb  ra  )	rK   re   r   r#   rD   r   rQ   rR   rS   )EXAMPLESy_typer   s      rU   test_column_or_1drf    s&   	*+	< 	ryy}t+,	y!	'	aS1#'	)Y!78	!I;/	!QFQFQF#;<	!QFQFQF#;<	!I;/	!299R=#8#8#ABH   	;;|A<z*  Q   	    s   C00C9	c                  <     G d d      } t         |              rJ y)z@Check that _is_polars_df return False for non-dataframe objects.c                       e Zd Zd Zy)+test__is_polars_df.<locals>.LooksLikePolarsc                 (    ddg| _         ddg| _        y )Nr   r   r  r  s    rU   r?  z4test__is_polars_df.<locals>.LooksLikePolars.__init__  s    :DL*DKr   NrH  rS  r   rU   LooksLikePolarsri    s    	%r   rk  Nr  )rk  s    rU   test__is_polars_dfrl    s"    % %
 _.////r   c                  ^   t         j                  j                  d      } t        | dd      }t        j                  ||       sJ |j
                  j                  sJ d| j
                  _        t        | dd      }t        j                  ||       rJ |j
                  j                  sJ y)zyCheck the behavior of check_array when a writeable array is requested
    without copy if possible, on numpy arrays.
    r   sizeFTr]   force_writeableN)rK   rL   uniformr   r  r   	writeable)ry   r[  s     rU   test_check_array_writeable_nprt    s     			x(A
aeT
:CsA&&&99AGG
aeT
:C""3***99r   c                  p   t         j                  j                  d      } t        | d      }t	        |dd      }t        j
                  ||      sJ |j                  j                  sJ t        | d      }t	        |dd      }t        j
                  ||      rJ |j                  j                  sJ y	)
a  Check the behavior of check_array when a writeable array is requested
    without copy if possible, on a memory-map.

    A common situation is when a meta-estimators run in parallel using multiprocessing
    with joblib, which creates read-only memory-maps of large arrays.
    r   rn  zw+r  FTrp  r  N)rK   rL   rr  r$   r   r  r   rs  )ry   mmapr[  s      rU   test_check_array_writeable_mmaprw    s     			x(A$Q$7D
d
=CsD)))99$Q#6D
d
=C""3---99r   c                     t        j                  d      } t        j                  j	                  d      }| j                  |d      }t        |dd      }t        j                  ||      sJ |j                  j                  sJ d|j                  _	        | j                  |d      }t        |dd      }t        j                  ||      rJ |j                  j                  sJ y)	zxCheck the behavior of check_array when a writeable array is requested
    without copy if possible, on a dataframe.
    r   r   rn  Fr\   Trp  N)
rQ   r   rK   rL   rr  r&  r   r  r   rs  )r   ry   r  r[  s       rU   test_check_array_writeable_dfry  	  s     
		X	&B
		x(A	ae	$B
bud
;CsB'''99AGG	ae	$B
bud
;C""3+++99r   c                  2   t        j                  g dg dg      } t        d      5  t        j                  t	        | d            sJ t        j                  t              5  t	        |        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  Tr  rR  )rs   r   r   r  r   rQ   rR   r   )X_sps    rU   8test_check_array_on_sparse_inputs_with_array_api_enabledr|  	  sy    <<I./D	4	0 {{;t4@AAA]]9% 		 	 	 s#   <B$B0BB
	BBc                     t         j                  j                  d      } t         j                  j                  dd      }d}t	        j
                  t        |      5  t        | d       d d d        t	        j
                  t        |      5  t        | |d       d d d        t	        j
                  t        |      5  t        | d       d d d        y # 1 sw Y   mxY w# 1 sw Y   GxY w# 1 sw Y   y xY w)	Nr   rn  r   )rY   z5'force_all_finite' was renamed to 'ensure_all_finite'r   T)force_all_finite)
rK   rL   rr  rP   rQ   r  r  r   r   r   r7  s      rU   $test_force_all_finite_rename_warningr  $	  s    
		x(A
		!%(A
AC	m3	/ .A-. 
m3	/ /!Q./ 
m3	/ 1q401 1. ./ /1 1s$   CC%C1C"%C.1C:ry   r   expected_error_messagezLFound array with dim 3, while dim <= 2 is required by RandomForestRegressor.z3Found array with dim 3, while dim <= 2 is required.c                 ~    t        j                  t        |      5  t        | |       d d d        y # 1 sw Y   y xY w)Nr   r6  r  r  s      rU    test_check_array_allow_nd_errorsr  4	  s2    " 
z)?	@ ,A+, , ,s   3<)__doc__rS  rs  rF  	itertoolsr   operatorr   tempfiler   numpyrK   rQ   scipy.sparser  rs   r   r  sklearn._configr   sklearn._min_dependenciesr   sklearn.baser	   sklearn.datasetsr
   sklearn.ensembler   sklearn.exceptionsr   r   sklearn.linear_modelr   (sklearn.metrics.tests.test_score_objectsr   sklearn.neighborsr   sklearn.random_projectionr   sklearn.svmr   sklearn.utilsr   r   r   r   r   r   sklearn.utils._array_apir   r   sklearn.utils._mockingr   r   sklearn.utils._testingr   r   r   r    r!   r"   r#   r$   r%   sklearn.utils.estimator_checksr&   sklearn.utils.fixesr'   r(   r)   r*   r+   sklearn.utils.validationr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rV   r   markparametrizerL   r   r   r   r   r  rv   r   r   r   r   r   r   r   rp   r   r   filterwarningsr  r  rf   ri   r)  r/  r:  r?  rC  rP  rU  rW  fixtureri  rl  rn  rw  r  r  r  r  r  r  r  r  rc  r  r  r  r  r  r  r  r  r   r  r  r  r  r   rS   r  r1  rt   r  r  r  r  
dia_matrixr3  r8  rJ  rV  r   r   rT  Integralrj   r   rf  _psd_cases_validvalueskeysrq  _psd_cases_invalidrv  rx  r}  r  r  r  r  r  r  r  r  r?  integerunsignedintegerr  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r$  r'  r*  r1  r8  r;  rA  rF  rP  rS  rW  r\  rf  rl  rt  rw  ry  r|  r  r  rS  r   rU   <module>r     sn   *  	    '      * 8 & ' 2 F . F 2 ;  
 
 
 7        >0$'%T "))

7
#YRYYr1U%C	D11G ,& ffe_rvv{+bffe_= BJJ#>?/ @	
/ 5	T45	d78	$(OP	k#>?	T/0	d23	d23FF?		
 
Q,-& BJJ#>?
 @'(
 'BCBJJ#>?%1 @ D%1P
;  BHHq"&&k]#!	

 BHHq"&&k]#!	

 BHHq"&&k]#C	
 
Arvv;-v	.0UV$ ,tUm<G =%&G) QRA
 SA
H 
sc3Z 3*sCj)53*sCj)5
d|$4,t-T:	(	( J 
**bjj	!2::.	RZZ 	BJJ//:%*"GJ5=()V9>/ 34 5,G
L<%~'T  0F'*!(H"BJ 
Z]D%(.I  22A(  -/'  

(
+	E rzz2::&

D)D ':;8 <848&9 
	 	6 $/4 04 U &94%@A	
 &94%@A	
 ^R*=t)DE O	
 &94%@A 	
 &94%@A	
 &8$%?@	
M-\	a  8r+s8r+< 









	
"
"	;,( n- .  P IJ	
 LLNO	
 LM	
 DMQR	
 67	
 67	
 67	
 67	
 !M	
 #	
 #	
Cmpb9cpb9& !Q($3!1a&)8288QF+;T2F!QV	 %hbhh1v&68OQST!U2::.!Qrzz*K	" 	!VBJJ/!Qrzz*K	" 	!QH	- > .		 	 	"#""$%  
 *T5M:5 ;54 	9 	7 	4 	$bjj14  	$rzz24 + :  		"	"	$%$$&'  
(
()IX RXXr}}bmm$LM( N( RXXr}}bmm$LM, N, R]]BMM$BC% D%60 TAq6N3 40 &HI1 J1$ 

2
2 &	<-	9bkk*	9bkk*	$	'2::&	"**%	$	

#	*bjj)	$	'2--.	8R//0	(B../	2--.	+r112(6)(6 G!	! 
qC8c1X& 	0  
 +-QR S
* 28WX Y 	%(^U1XtsCj3*%=>6  

/ "I	/		/ +-OP! Q!   "	&y1!45	(2156	%h/23	!	!	. 
q#$
C:	 12 
J  &&"	=] 	=$$6J HDD/:& 1aAq"&&*ACU)VW* X*$ ) ) $ )D%=9? :?*! ^#n4~E *?@2 A	
2, xrxx{HBHHQK&@Aq6Aq6BR%ST U 00&,. ) )1  0 BHH1v1v&!Q!Q(89:!#%	
 BHH1v1v&!Q!Q(89:A	
 ,! ,r   