
    Q3j	T                    <&   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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l-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZa d Zbd Zcej                  j                  dej                  j                  d       eEdd      g      d        Zgd Zhd Zid  Zjej                  j                  d!ej                  d"fej                  d#fej                  d"fg      ej                  j                  d$ej                  ej                  ej                  g      d%               Zpej                  j                  d&ej                  d'd(d)fej                  dd(d*fej                  d+d(d,fej                  dd#d*fej                  d'd(d-fej                  dd(d.fej                  d/d(d0fej                  d'd1d2fej                  d'd3d-fg	      ej                  j                  d$ej                  ej                  ej                  g      d4               Zqej                  j                  d5g d6      ej                  j                  d$ej                  ej                  ej                  g      d7               Zrd8 Zsej                  j                  d9 ej                  d3ej                  gg      d:f ej                  d3ej                  gg      d:f ej                  d3ej                  gg      d;f ej                  d3ej                  ggeu<      d=fg      ej                  j                  d>d(d"g      d?               Zvd@ Zwej                  j                  dA      dB        Zyej                  j                  ddCdDgdEdFgg ej                  dCdDgdEdFggdG<       ej                  dCdDgdEdFggdH<      dIdJgdKdLgg ej                  dIdJgdKdLggdM<      g      dN        ZzdO Z{ej                  j                  dPg dQ      ej                  j                  dRej                  ej                  gej                  fej                  ej                  fdSej                  fg      dT               Z~dU ZdV ZdW ZdX ZdY ZdZ Zd[ Z ej                  g d\]      d^        Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zej                  j                  di ed      eegg djk      dl        Zdm Zej                  j                  dn e0             do        Zdp Zdq Zdr Zej                  j                  dsej                  ej                  fej                  ddSf      ej                  j                  dtdu      dv               Zdw Zdx Z G dy dz      Z G d{ d|      Zd} Zej                  j                  d~d(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k      d        Zej                  j                  d$ej                  ej                  ejJ                  ejL                  ejN                  ejP                  ejR                  ejT                  ej                  ejV                  ejX                  ejZ                  ej\                  ej^                  ej`                  g      d        Zd Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  j                  dd3deddd ed      fddejr                  ddd ed      fddejt                  ddd ed      fd3deefddd ed      fd3deddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fg      d        Zd ej                  d3dg      dd'f ej                  d3dg       ej                  d3dg      dd'fd ej                  ddg      edfd ej                  ddg      ed'f ej                  d3dgej                  <       ej                  d3dgej                  <      edf ej                  d3dgej                  <       ej                  d3dgej                  <      edfd ej                  ddg      edfdZej                  j                  d eej                                eej                               k      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j                                eej                               k      d̈́        Zd΄ Zdτ Zej                  j                  dn e0             dЄ        Zej                  j                  ddgdd3gdd3gg dӢg dԢg      dՄ        Zej                  j                  dn e0             ej                  j                  ddgdd3gdd3gg dӢg dԢg      dք               Zej                  j                  dg dעdgddgg      dل        Zej                  j                  dn e0             ej                  j                  dg dעdgddgg      dڄ               Zej                  ej                  ejV                  ejJ                  gZej                  j                  dej                  gez         d܄        Zej                  j                  dej                  gez         d݄        Zej                  j                  de˫      dބ        Zd߄ Zd Zd Zej                  j                  ddd3dgg      d        Zej                  j                  dg d      d        Zd 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d dej                  fddej                  fddej                  fddej                  fg      d        Zej                  j                  dg d	      d
        Zej                  j                  dg dg dg dg ddd3iddiddiggg dk      ej                  j                  dg d      d               Zej                  j                  dg dg dk      d        Zej                  j                  d e ed             ed      dddgddgggg dk      d        Zej                  j                  dg d      d        Zߐd Zej                  j                  d dd3gd!fd"d#gd$fgd%d&gk      d'        Z G d( d)e      Zej                  j                  g d*d+g d,d-fd.g dd/fd0g dd/fg      d1        Zd2 Zej                  j                  d3g d4      d5        Zd6 Zd7 Zej                  j                  d8dd3dd3dej                  gg d9g      d:        Ze<d;        Zej                  j                  d<g d=      ej                  j                  d>d(d"g      d?               Zej                  j                  d@eBeAz   e@z   eCz         ej                  j                  dAg dB      dC               Zej                  j                  dD ej                  d3       ej                  d      gd3dgddggg      dE        ZdF ZdG ZdH ZdI Ze<dJ        Zej                  j                  g dK ej                  d3dgddggd3dgddggg       e       dLf ej                  d3dgddggd3dgddggg      ddMfg      dN        Zej                  j                  dOdPgdQdRg ej                  dS      f ej                  dQdTgeu<       ej                  dU      fddg ej                  dV      fg dW ej                  dX      fg      dY        Zej                  j                  dOdZgg d[d(fd3dgd(fddgd"fd\g      ej                  j                  dg d]      d^               Zd_ Zy(`  z$Tests for input validation functions    N)product)
itemgetter)NamedTemporaryFile)config_context)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)_is_numpy_namespacemove_to)yield_namespace_device_dtype_combinations)MockDataFrame_MockEstimatorOnOffPrediction)
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_sparse_random_array)FLOAT_DTYPES_allclose_dense_sparse_check_categorical_features_check_feature_names_in_check_method_params_check_pos_label_consistency_check_psd_eigenvalues_check_response_method_check_sample_weight_check_y_deprecate_positional_args_estimator_has_get_feature_names
_is_fitted_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)
rA   nprandommtrand_randRandomStaterandintpytestraises
ValueError)rng_42s    P/DATA/.local/lib/python3.12/site-packages/sklearn/utils/tests/test_validation.pytest_make_rngrU   ^   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	"./ 
#	"	"s   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'        j,                  t        j                  d      g      j+                         t/        ddd	
      j+                         g}|D ]G  }t	        |d      }t         j0                  |d<   t        j2                  |      j5                         sGJ  y )N)   
   dtyperX   FcopyT)rW         皙?)densityr   r   )rJ   onesint32aranger   rZ   float32astypeint64float64boolint8int16uint8uint16uint32objectasfortranarray	isfortransp
csc_matrixtoarray	csc_arrayr   nanisnanany)XX2tested_dtypesrZ   matricesMNs          rT   test_as_float_arrayr   p   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#++-
biil^$,,.b"d3;;=H
 14(&&$88A;??$$$     ry   rX   r]   csrformatc                     | j                         } t        j                  | d<   t        j                  | d<   t        | d      }t	        ||        y )N)r^   r   )      	allow-nanensure_all_finite)r\   rJ   rv   r   r    )ry   X_converteds     rT   test_as_float_array_nanr      s?     	
AffAdGffAdG kBK a0r   c                  x   t        j                  d      j                  dd      } t        t	        |       t         j
                        rJ t        t	        t        j                  |             t         j
                        rJ t        t	        t        j                  |             t         j
                        rJ y )N   rW      )	rJ   rd   reshape
isinstancer   matrixrr   rs   ru   ry   s    rT   test_np_matrixr      s{    
		"a#A.+RYY777.q)9:BIIFFF.a9299EEEEr   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    rT   <lambda>ztest_memmap.<locals>.<lambda>   s    nQU3r   zsklearn-test)prefixrX   rX   )shaperZ   r   r   )r   rJ   memmapre   r   asarrayr!   ravel)asflttmpr}   fry   s        rT   test_memmapr      s     4E	>	2cIIc<!rzz51A!AAaDqwwy!'')4AaD	 2	 
3	2	2s   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)rX   r^   )TFC)orderr\   C_CONTIGUOUSFF_CONTIGUOUS)rJ   rb   Tr   flagsrr   	csr_arraydata)ry   Ar\   Bs       rT   test_orderingr      s     	AV!DASt4A77>***ASt4A77>***z!z "  	Q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]   ra   T)r   accept_sparse)rJ   rd   r   rf   floatr   r    )valuer   r   ry   	X_checkeds        rT   (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]   ra   matchT)
input_namer   r   )	rJ   rd   r   rf   rh   rP   rQ   rR   r   )r   r   r   	match_msgr   ry   s         rT   *test_check_array_ensure_all_finite_invalidr      si    . 	ryy|##Aq)00<=AAdG	z	3!/		
 
4	3	3s   )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]   ra   
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   )rJ   rd   r   rf   rh   rv   r   	__class____name__rP   rQ   rR   r   r   argsfitrb   r   )r   r   r   r   extended_msgctxs         rT   0test_check_array_links_to_imputer_doc_only_for_Xr      s^    "))A,&&q!,33BJJ?@DDJI
Y  ))* +- 	-  
z6*])K	LPS!		
 
M Ssyy~~a0000399>>!#4444S ]]:vj\-OPTWEIIdBGGDJJqM23 Qsyy~~a0000  
M	L  QPs   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brY   r   rZ   r   Fr   r   T)	rJ   arrayrv   ro   r   r   rP   rQ   rR   )ry   r   s     rT   )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.*intrY   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   )rP   rQ   rR   r   int)ry   err_msgr   s      rT   8test_check_array_ensure_all_finite_object_unsafe_castingr   7  s+    0 
z	1AS4EF 
2	1	1s	   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]   rW   z+Expected a 2-dimensional container but got z	 instead.r   T	ensure_2dN)rP   importorskipSeriestyperQ   rR   r   )pdsermsgs      rT   test_check_array_series_err_msgr   S  sX     
		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        | |||      }||j.                  |k(  sJ |j.                  | j.                  k(  sJ |dk(  r"|j0                  d   sJ |j0                  d   r)J |dk(  r"|j0                  d   sJ |j0                  d   rJ |r| |urJ | j.                  |j.                  k(  s|j0                  d   | j0                  d   k(  s|j0                  d   | j0                  d   k(  s| |u rJ  g }	|	j3                  t4        t6        z   t8        z   t:        z   D cg c]
  } ||       c}       |	j3                  |	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        | |||      }||j.                  |k(  sJ |j.                  | j.                  k(  sJ | j@                  |v r| j@                  |j@                  k(  sJ |j@                  |d   k(  sJ |r| |urJ | j.                  |j.                  k(  s| j@                  |j@                  k(  s| |u rJ  t        ddgddgg      }tC        |t        jD                        sJ t        j                  t              5  t        |jG                                d d d        t        |jG                         d
       tI        |      }t        |      }tC        |t        jD                        sJ t        ddgddgg      }d}t        j                  t        |	      5  t        |d
dtK                       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]   rW   r   )r   r   r]   Fr   z'Expected 2D array, got 1D array insteadr   Tz+Expected 2D array, got scalar array insteadrX   r   zExpected 2D input, got)r   r      allow_ndr   r   )r   r   N)rZ   r   r\   r   r   r   r   coodokrZ   r   r\   z<Negative values in data passed to X in RandomForestRegressorry   )ensure_non_negativer   r   )&rr   r   rP   rQ   	TypeErrorr   ndimrR   hasattrnextiterrJ   rd   r   r\   rf   r   r   rc   re   ri   ro   r   rZ   r   extendr'   r&   r%   r)   rg   rh   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copysrZ   r   r\   r   sparse_containeraccept_sparsesdtnon_object_dtypesr   X_dense
X_no_arrayresultX_negr   s                              rT   test_check_arrayr	  b  s    Q!QALLOE	y	!E 
" )u5G<<1	z)R	SI. 
T 
z)V	WB$' 
X r;$r||A/0
??az1IJJddK K 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~%~+ "D4 
BII %3%% %	
%  S!%	
 IIr!u||BHH%r!u||BJJ'?@Aenuen5N '-Af&0@f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 $+-		
 
2	1m 
"	! 
T	S 
X	W KJ
 
#	"T	
 B6 
#	" 
2	1se   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   numericrY   NrP   rQ   rR   r   )ry   expected_msgs     rT   test_check_array_numeric_errorr    s.     UL	z	6AY' 
7	6	6s   5>c                  $   t        j                  d      } | j                  g dg dd      }t        j                  t              5  t        |d       ddd       | j                  g dg dd      }t        j                  t              5  t        |d       ddd       | j                  g d	      }t        j                  t              5  t        |dd
       ddd       t        |d      }|j                  t        j                  k(  sJ t        ||j                         t        |dd
      }|j                  t        j                  k(  sJ t        ||j                         y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)a  check_array raises an error for pandas StringDtype with dtype='numeric'.

    Non-regression test for pandas 3 where string columns use StringDtype
    instead of object dtype. check_array should reject string data when
    dtype='numeric' is requested.
    r   )r   r   z)r
  r  r  r   r   r  rY   N)      ?       @      @r   r   cFrZ   r   )rP   r   	DataFramerQ   rR   r   r   rZ   rJ   object_r!   values)r   df_strdf_mixeds_strr  s        rT   2test_check_array_pandas_string_dtype_numeric_errorr)    s     
		X	&B \\oFGF	z	"F), 
# ||/HIH	z	"HI. 
# IIo&E	z	"Ee< 
# t,F<<2::%%%vv}}-de<F<<2::%%%vu||,) 
#	"
 
#	"
 
#	"s$   E-E:F-E7:FF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/  r0  z1.2)
minversionr   r]   rW   r   r   r   )r   r]   rW   r   r^   r   )rZ   columnsr!  r   r   )r   rZ   Fr   r   Tr   )rP   r   rJ   r   rv   r   r#  rf   r   r   rZ   rQ   rR   )r*  rZ   expected_dtyper   X_npry   r   r   s           rT   "test_check_array_pandas_na_supportr6    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]   Int64rY   r   r   TF)r   r   N)r   r   rZ   )rP   r   r   NArQ   rR   r   r   rJ   rv   rZ   rh   re   )r   X_int64r   X_outs       rT   *test_check_array_panadas_na_support_seriesr<  C  s    			X	&BiiAruuWi5G
C	z	-GtuE 
. 5EJEEAq"&&>*;;"**$$$5EE EAq"&&>*;;"**$$$ 
.	-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   	   rY   r   r]   cat_col)rP   r   rJ   r   re   r#  r   rZ   r+   rf   float16r!   r   rk   rh   Categoricalrg   )r   ry   X_dfcat_dfs       rT   %test_check_array_pandas_dtype_castingrG  X  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 )N皙?gffffff?g333333?g      ?g?r_   rY   )rJ   r   r   r   rZ   re   )arrmock_dfchecked_arrs      rT   "test_check_array_on_mock_dataframerM  }  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   r>  r?  iFr   )r   rZ   kindr   s    rT    test_check_array_dtype_stabilityrQ    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   r>  r?  rY   errorT)rZ   r   r   r   r   F)rJ   r   re   rg   rr   r   ru   rc   warningscatch_warningssimplefilterr   rh   rZ   r   )

X_int_list	X_float32r:  X_csr_float32X_csc_float32X_csc_int32integer_datafloat32_datary   r   s
             rT   test_check_array_dtype_warningr^    s   Y	2J

:RZZ8Ijj2884GLL+MLL+M,,wbhh7K[)L}m<L		 	 	"g&A#ARZZtLI??bjj000  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]   rW   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   )rr   r   r   rP   rQ   r   r   rR   )ry   r   invalid_typer   s       rT   -test_check_array_accept_sparse_type_exceptionrc    s   
Q!QALLOE5L	A  
y	,E/ 
-	G  
z	-E6 
.	5  
z	-E, 
.	z	-E, 
.	y	.E,8 
/	.% 
-	, 
.	- 
.	-	-	-	.	.s<   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]   rW   r   Tr`  r   )r   )rr   r   r   )ry   r   s     rT   +test_check_array_accept_sparse_no_exceptionre    sK    
Q!QALLOET*U+eW-X.r   )r   cscr   bsr)paramsc              #     K   t        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)   rX   r   r   coordsc              3   >   K   | ]  }|j                  d         yw)rg   N)rf   ).0vs     rT   	<genexpr>zX_64bit.<locals>.<genexpr>  s     A1QXXg.s   rg   )
r*   paramr   tuplerk  rowrf   colindicesindptr)requestry   s     rT   X_64bitrw    s     Xgmm<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   )rw  s    rT   1test_check_array_accept_large_sparse_no_exceptionrz    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   ry  r  )rw  r   s     rT   4test_check_array_accept_large_sparse_raise_exceptionr|    s4    	<  
z	-G4UK 
.	-	-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.rG   )r   rX   r   zC1 sample\(s\) \(shape=\(1, 10\)\) while a minimum of 2 is required.r]   )ensure_min_samples)r~  r   r   zD2 feature\(s\) \(shape=\(10, 2\)\) while a minimum of 3 is required.rW   )ensure_min_featuresT)r  r   r   rX   zD0 feature\(s\) \(shape=\(10, 0\)\) while a minimum of 1 is required.)rX   r      r  r   )rP   rQ   rR   r   reescaper   rJ   rb   r   emptyr   r!   )r   ry   r   r   	y_checkeds        rT   2test_check_array_min_samples_and_features_messagesr    s   
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   )r  r  r   r  )r  r  r  r  r  r  )
rJ   r   rP   rQ   rR   r   r   rr   	coo_arrayr4   )ry   r   s     rT   #test_check_array_complex_data_errorr  F  s   
*,DEFA	z)E	FA 
G 
"#;<A	z)E	FA 
G 	=A	z)E	FA 
G 
*	+RXX6N-OPA	z)E	FA 
G 
*	+RXX6N-OPA	z)E	FA 
G 	bhh 8:RSTUA	z)E	FA 
G 	q&kAq6*+A	z)E	FA 
G
 	ABA	z)E	F 
G	FI 
G	F
 
G	F
 
G	F
 
G	F
 
G	F
 
G	F
 
G	F 
G	Fs_   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 Nra  )selfry   r   r   s       rT   r   zDtest_has_fit_parameter.<locals>.TestClassWithDeprecatedFitMethod.fitw      r   r  )r   
__module____qualname__r   r   ra  r   rT    TestClassWithDeprecatedFitMethodr  v  s    	M	N	 
O	r   r  z=has_fit_parameter fails for class with deprecated fit method.)rD   r   r	   r   )r  s    rT   test_has_fit_parameterr  p  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   rf  r   lilrg  T)raise_exceptionF)raise_warning)rJ   r   rb   rr   	dok_arrayr   ru   r  	lil_array	bsr_arrayrP   rQ   rR   r   itemswarnsUserWarningissparser   r!   rt   )arr_symarr_badarr_asymtest_arrays
arr_formatrJ  outputs          rT   test_check_symmetricr    sa   hhAA'(GggajGxx!Q!Q()H ||H%||H%||H%||H%||H%||H%K 
z	"  
# ',,.
C\\+&C  ']]:&C6 ' !E:;;v==J...v~~/9vw/ /	 
#	" '&&&s$   !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)r8   r  kwargss     rT   r   z:test_check_is_fitted_with_is_fitted.<locals>.Estimator.fit  s    "DOKr   c                 6    t        | d      xr | j                  S )Nr8   )r   r8   r  s    rT   __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  ra  r   rT   	Estimatorr    s    		Cr   r  )r   rP   rQ   r
   r>   r   )r  s    rT   #test_check_is_fitted_with_is_fittedr    sG    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  ra  r  s     rT   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     rT   r  zKtest_check_is_fitted_stateless.<locals>.StatelessEstimator.__sklearn_tags__  s    7+-D %DKr   )r   r  r  r   r  __classcell__)r   s   @rT   StatelessEstimatorr    s    		 	r   r  N)r   r>   )r  s    rT   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)rP   rQ   r   r>   r   r   r
   rR   AttributeErrorr   r   )ardsvrr   r   s       rT   test_check_is_fittedr    s\   	y	!& 
"	y	! 
" /C
%C?]]>*C  +]]>*C  + .C9E	z	/% 
0 /C&E	~U	3% 
4 CGGZ\CGGZ\3'''3'''? 
"	!	!	! +*** ?>>>u? 
0	/
 
4	3sk   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  ra  r  ry   r   s      rT   r   z8test_check_is_fitted_attributes.<locals>.MyEstimator.fit  r  r   N)r   r  r  r   ra  r   rT   MyEstimatorr    s    	r   r  z
not fitteda_b_)
attributesr   )r  
all_or_anyr   r   )
r   r8   rP   rQ   r
   r>   allrx   r  r  )r  r   ests      rT   test_check_is_fitted_attributesr    s   m  C
-C#4,777	~S	1t5 
2#4,3GGG	~S	1tE 
2#4,3GGG	~S	1tE 
2 CF#4,777	~S	1t5 
2#4,3GGG	~S	1tE 
2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 
2	1 
2	1 
2	1
 
2	1 
2	1s<   H8II,I5I,8IIII),I5wrap)singlelistrq  )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   rP   rQ   r
   r>   r   r   )r  r  s     rT   $test_check_is_fitted_with_attributesr  	  s     /C	~-@	AT7)_- 
B CGGZ\ Cwi) 
~-@	AT;-01 
B	A 
B	A 
B	As   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]   rW   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=   rJ   r   rr   r   rP   rQ   rR   r   ro   r	   ra  r   rT   test_check_consistent_lengthr    sK    QC!qcA34aVq!fX.Ac
CQCrxx}bll66JK	z)J	KA, 
L	y(:	;A* 
<	y(=	>A1 
?	y	!A4 
" 
y(I	JA(=(?@ 
K	J 
L	K	;	;	>	>	!	! 
K	Js<   >F 1F#F"F$ F0 F	FF!$F-0F9z(array_namespace, device_name, dtype_namec                    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]   rW   r   rY   r   r  r   N)r   r   r=   r   rJ   ro   rr   r   rP   rQ   rR   )array_namespacedevice_name
dtype_namexpr  s        rT   &test_check_consistent_length_array_apir  /  s     &o{JOJB	4	0JJyJ0JJAAA/J?JJf5LL1a&1a&1a&12	
 ]]:-NO#

Aq6&
1

A3v
. P 
1	0 PO 
1	0s$   BC>/2C2!C>2C;	7C>>Dc                      t        j                  d      } t        j                  g dg dg dg      }| j	                  |g d      }t        |       y )Nr   r   r>  r?  )r   r   r   r3  )rP   r   rJ   r   r#  r=   )r   ry   rE  s      rT   "test_check_dataframe_fit_attributer  H  sD     
		X	&B
)Y	23A<<#4<5DD!r   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)	rJ   r   infrP   rQ   rR   r<   sklearn
set_configr   s    rT   test_suppress_validationr  R  s    
!RVVA	z	"! 
#T*aU+	z	"! 
#	" 
#	"
 
#	"s   B8#C8CCc                  Z   t        j                  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   categoryr"  rY   )	rP   r   r   r   r!   rJ   r   rf   ro   )r   resss      rT   test_check_array_seriesr  ]  sx    			X	&B
bii	*e
<CsBHHY/0 			/"))*5A
atu
5CsBHH_FCDr   rZ   
bool_dtype)ri   booleanc                 F   t        j                  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_    @TFTrY   )r   r   ri   r  )r          r  )r  r_   r  )r  r  r  )rP   r   r#  r   r   rZ   rJ   rh   r   r   r    )rZ   r  r   dfr   expected_arrays         rT   'test_check_dataframe_mixed_float_dtypesr  i  s     
		X	&B	"II1ID	

 ) 
 
B %(E;;"**$$$XX	/?;5N !7r   c                     t        j                  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)z>Check that pandas.DataFrame with bool return a boolean arrays.r   ri   r  NrY   TFr   )ri   r   r   r  r  r   r   r]   rW   )	rP   r   r#  r   rZ   rJ   bool_r!   rg   r   r  r   s      rT   #test_check_dataframe_with_only_boolr
    s    			X	&B	v23	4B$'E;;"(("""uvw78 
$Y7 
 
B ),E;;"(("""u1v1v1v67r   c                      t        j                  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)	zMCheck that pandas.DataFrame with boolean return a float array with dtype=Noner   ri   r  r  rY   NTF)	rP   r   r#  r   r   rZ   rJ   rh   r!   r	  s      rT   &test_check_dataframe_with_only_booleanr    sl    			X	&B	vryy)<IyNO	PB$'E;;"**$$$uvw78r   c                       e Zd Zd Zy)DummyMemoryc                     |S r  ra  )r  funcs     rT   cachezDummyMemory.cache  s    r   N)r   r  r  r  ra  r   rT   r  r    s    r   r  c                       e Zd Zy)WrongDummyMemoryNr   r  r  ra  r   rT   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  rP   rQ   rR   r  r   )tmp_pathr  memorydummyr   s        rT   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)rJ   rb   r   r   may_share_memoryr   )r\   ry   X_memmapr   s       rT   test_check_array_memmapr$    sg    
A	A	%t4	""8Y7HEEE{+t333 
&	%	%s   >A++A4zOestimator_name, estimator_value, delegates, expected_result, expected_exception
estimator_SubEstimatorra  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  ra  r   rT   MockEstimatorr5    s    r   r6  )r6   setattrrP   rQ   )estimator_nameestimator_valuer3  expected_resultexpected_exceptioncheckr6  r   s           rT   test_estimator_hasr=    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   ra   z	Negative r   )rJ   r   r@   rP   rQ   rR   )r   r   ry   s      rT   test_check_non_negativer?  (  s    * 	,lLIJAq	Aq"AA Aq"AdGq	A	z	51b! 
6	5	5s   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   )rJ   rb   rP   rQ   rR   r   r	   )ry   r   r   s      rT    test_check_X_y_informative_errorrC  I  su    
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        G d d	      } |t        j                  d
            }t        |      d
k(  sJ  |t        j                  d      j                  d
d            }t        |      d
k(  sJ y# 1 sw Y   zxY w)z4Test _num_samples on different non standard input X.c                       e Zd Zd Zd Zy)Ctest_num_samples_on_non_standard_shape.<locals>.TestNonNumericShapec                     d| _         y N)znot numericr   r  s    rT   __init__zLtest_num_samples_on_non_standard_shape.<locals>.TestNonNumericShape.__init__Y  	    )DJr   c                     t        g d      S )Nr   )lenr  s    rT   __len__zKtest_num_samples_on_non_standard_shape.<locals>.TestNonNumericShape.__len__\  s    y>!r   N)r   r  r  rJ  rN  ra  r   rT   TestNonNumericShaperF  X  s    	*	"r   rO  c                       e Zd Zd Zy)Ctest_num_samples_on_non_standard_shape.<locals>.TestNoLenWeirdShapec                     d| _         y rH  rI  r  s    rT   rJ  zLtest_num_samples_on_non_standard_shape.<locals>.TestNoLenWeirdShape.__init__d  rK  r   N)r   r  r  rJ  ra  r   rT   TestNoLenWeirdShaperQ  c  s    	*r   rS  r  r   Nc                       e Zd Zd ZddZy)Ptest_num_samples_on_non_standard_shape.<locals>.TestNoLenNoShapeButArrayProtocolc                     || _         y r  r   )r  r   s     rT   rJ  zYtest_num_samples_on_non_standard_shape.<locals>.TestNoLenNoShapeButArrayProtocol.__init__k  s	    DFr   Nc                 D    t        j                  | j                  |      S )NrY   )rJ   r   r   )r  rZ   r\   s      rT   	__array__zZtest_num_samples_on_non_standard_shape.<locals>.TestNoLenNoShapeButArrayProtocol.__array__n  s    ::dffE22r   )NN)r   r  r  rJ  rX  ra  r   rT    TestNoLenNoShapeButArrayProtocolrU  j  s    		3r   rY  rW   r   r]   )r:   rM  rP   rQ   r   rJ   rd   r   )rO  ry   rS  rY  s       rT   &test_num_samples_on_non_standard_shaperZ  U  s    " " 	A?c!f$$$* * 
y(I	J(*+ 
K3 3 	)16A?a(1)=)=a)CDA?a 
K	Js   CC#constructor_name)r  rq  r   seriespolars_seriesc                 `    t        t        t        d            |       }t        |      dk(  sJ y)z*Test _num_samples on different 1d input X.rW   N)r   r  ranger:   r[  ry   s     rT   test_num_samples_on_1dra  w  s+    
 	4a>+;<A?ar   )r  rq  r   sparser   pyarrowpolarsc                 N    t        ddgddgddgg|       }t        |      dk(  sJ y)z6Test _num_samples on different dataframe-like input X.r      r]      rW   !   N)r   r:   r`  s     rT   #test_num_samples_on_dataframe_likesri    s6     	QGaWq"g68HIA?ar   r   )r]   rW   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
    providedrS  	test_namer]   r^   bothtarget_typemin_valmax_valinclude_boundariesN)rT  rU  rV  rB   numbersReal)r   scalars     rT   test_check_scalar_validru    sZ     
	 	 	"g&%
 
# Q;; 
#	"s   5AA#zJx, target_name, target_type, min_val, max_val, include_boundaries, err_msg
test_name1r]   r   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
    givenrm  N)rP   rQ   	ExceptionrB   r  r   r   r   )r   target_namern  ro  rp  rq  r   raised_errors           rT   test_check_scalar_invalidr    st    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)NrS  )r  r   )rT  rU  rV  r   r1   rP   r  r   )lambdasexpected_lambdasw_typew_msgr  lambdas_fixeds         rT    test_check_psd_eigenvalues_validr  =  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   )rP   rQ   r1   )r  err_typer   s      rT   "test_check_psd_eigenvalues_invalidr  x  s&     
xw	/w' 
0	/	/s   -6c                 j   t        d | j                  d            }t        t        |t        d      t	        j                  d             t        d| j                  d            }t        t        |t        d      dt	        j                  d      z         t        j                  t        d	      5  t        | j                  d
      | j                  d             d d d        t        j                  d| j                  d      j                   d      }t        j                  t        |	      5  t        | j                  d      | j                  d             d d d        | j                  d      }| j                  d| j                        }t        ||      }|j                  | j                  k(  sJ | j                  d      }| j                  t        |            }d|d<   d}t        j                  t        |	      5  t        ||d       d d d        | j                  d      }| j                  t        |            }d}t        j                  t        |	      5  t        ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr^   r]   r   cpu)r  r  r^   r  r]   z)Sample weights must be 1D array or scalarr   )r]   r   rA  zsample_weight.shape == r   z, expected (2,)!rY   r   z1Negative values in data passed to `sample_weight`T)r   z9Sample weights must contain at least one non-zero number.F)allow_all_zero_weights)r3   rb   r   r   rJ   rP   rQ   rR   r  r  r   re   rZ   r:   zeros)r  r   r   ry   r   s        rT   _check_sample_weight_commonr    s    )AMGMb?L )@MGMb?RWWQZP 
z)U	VRWWV_@ 
W ))-bggaj.>.>-??OP
QC	z	-RWWQZ2776?; 
. 	AGGARZZG0M(:M"**,,, 	AGGLO,MM"AG	z	1]A4H 
2 	AHH\!_-MIG	z	1]AeL 
2	15 
W	V
 
.	- 
2	1 
2	1s0   5,J6,JJ+J)JJJ&)J2c                     t        j                  d      d d d   } | j                  d   rJ t        | t        j                  d            } | j                  d   sJ t	        t                t        j                  dt
              }t        d ||j                        } | j                  t         j                  k(  sJ y )NrX   r]   r   r^   r   r   r  rY   )rJ   rb   r   r3   r  r   rZ   rh   )r   ry   s     rT   test_check_sample_weightr    s    GGBK!$M"">222("''&/JM~...# 	c"A(q@M"**,,,r   c                 R   t        | ||      \  }}t        d      5  |j                  d      d d d   }t        |      r|j                  d   rJ t        ||j                  d            }t        |      r|j                  d   sJ t        |       d d d        y # 1 sw Y   y xY w)NTr  rX   r]   r   r  r   )r   r   rb   r   r   r3   r  )r  r  r  r  r  r   s         rT   "test_check_sample_weight_array_apir    s    
 &o{JOJB	4	0CaC(r"$**>:::,]bggfoNr" &&~666#B' 
1	0	0s   A7BB&y_truer   )r   r   r   )r   r   r   c                 &    t        d |       dk(  sJ y )Nr   )r0   r  s    rT    test_check_pos_label_consistencyr    s    'f5:::r   c                     t        | ||      \  }}t        d      5  |j                  ||      }t        d |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NTr  r  r   )r   r   r   r0   r  r  r  r  r  r  rJ  s          rT   *test_check_pos_label_consistency_array_apir    sQ     &o{JOJB	4	0jjj/+D#6!;;; 
1	0	0s   %AA)r]   rW   r   r  c                     t        j                  t        d      5  t        d |        d d d        t        d|       dk(  sJ y # 1 sw Y   xY w)Ny_true takes value inr   r   )rP   rQ   rR   r0   r  s    rT   (test_check_pos_label_consistency_invalidr    sB    	z)@	A$T62 
B (V4;;; 
B	As   AAc                 (   t        | ||      \  }}t        d      5  |j                  ||      }t        j                  t
        d      5  t        d |       d d d        t        d|      dk(  sJ 	 d d d        y # 1 sw Y   $xY w# 1 sw Y   y xY w)NTr  r  r  r   r   )r   r   r   rP   rQ   rR   r0   r  s          rT   2test_check_pos_label_consistency_invalid_array_apir    s~     &o{JOJB	4	0jjj/]]:-DE(s3 F ,C5<<< 
1	0EE 
1	0s#   /BA<B<B	BBrt   c                     t        j                  d      j                  dd      } | |       | |      }}t        ||      sJ y )NrA  rW   rJ   rd   r   r,   rt   baser   r   s       rT   !test_allclose_dense_sparse_equalsr    s=    99Q<1%D4='$-qA!!Q'''r   c                     t        j                  d      j                  dd      } | |       | |dz         }}t        ||      rJ y )NrA  rW   r   r  r  s       rT   %test_allclose_dense_sparse_not_equalsr    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)NrA  rW   r   zFCan only compare two sparse matrices, not a sparse matrix and an arrayr   )rJ   rd   r   rP   rQ   rR   r,   )rt   r   r   r   s       rT    test_allclose_dense_sparse_raiser    sR    
		!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  ra  r   r   r!  r  s       rT   f1z=test_deprecate_positional_args_warns_for_function.<locals>.f1      r   Pass c=3 as keyword argsr   r]   rW   Pass c=3, d=4 as keyword argsr   )r   r!  r  c                     y r  ra  r  s       rT   f2z=test_deprecate_positional_args_warns_for_function.<locals>.f2"  r  r   zPass b=2 as keyword argsc                     y r  ra  r  s       rT   f3z=test_deprecate_positional_args_warns_for_function.<locals>.f3*  r  r   )r   r5   rP   r  FutureWarning)r  r  r  s      rT   1test_deprecate_positional_args_warns_for_functionr    s   1    
m+F	G
1a 
H 
m+K	L
1aA 
M  Q!q    
m+F	G
1a 
H  1    
m+F	G
1a 
H	G% 
H	G 
M	L 
H	G 
H	Gs/   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  ra  r  s     rT   r  zEtest_deprecate_positional_args_warns_for_function_version.<locals>.f13  r  r   z,From version 1.1 passing these as positionalr   r   r]   r  )r  s    rT   9test_deprecate_positional_args_warns_for_function_versionr  2  sH    . / 
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  ra  r  r   r   r!  r  s        rT   rJ  zCtest_deprecate_positional_args_warns_for_class.<locals>.A1.__init__?  r  r   Nr   r  r  r5   rJ  ra  r   rT   A1r  >  s    	#&'1 	 
$	r   r  r  r   r   r]   rW   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  ra  r  s        rT   rJ  zCtest_deprecate_positional_args_warns_for_class.<locals>.A2.__init__J  r  r   N)r   r   r  ra  r   rT   A2r  I  s    	#	!q 	 
$	r   r  )rP   r  r  )r  r  s     rT   .test_deprecate_positional_args_warns_for_classr  =  s     
 
m+F	G
1a 
H 
m+K	L
1aA 
M 
 
m+F	G
1a 
H 
m+K	L
1aA 
M	L 
H	G 
M	L 
H	G 
M	Ls/   CCC(;C4CC%(C14C=rt  rW   c           
         t         j                  j                  dd      }g dt        j                  g d      t	        j
                  g dg      j                  t	        j
                  g dg      t	        j                  g dg      j                  t	        j                  g dg      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   |             t        |d   t        |d   |             y )Nr   r]   )r   r]   rW   r   r   xxx)	r  r   sparse-col2sparse-row2
sparse-col
sparse-row
scalar-int
scalar-strNone)rh  rt  r   )r  r  r  r  r  r  r   r  r  )rJ   rK   randnr   rr   rs   r   ru   r/   r  r_  r   r   r!   r    )rt  ry   _paramsr  indices_keys         rT   test_check_method_paramsr  U  s?   
		1A,'}}l^466}}l^4llL>244llL>2
G "!GWEF!-w4aggaj8I3JHPc{gcl*** Q &>^GFOXFFFFvgww7G(RS |nW\-BHM !}~gm.DhOr   	sp_format)Tr   rf  r   rg  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   rX   rW   r`  Tr   )rP   r   r   r#  rb  from_spmatrixr   rr   r  r   r    )r  r   sp_matsdfr  s        rT   "test_check_sparse_pandas_sp_formatr  s  s     
		X	&B"2q)F
,,


+
+F
3CI6FD	;;v==I%%% 0r   c                     t        j                  d      } | j                  dt        j                  ddd      i      }t        dd      D ]T  }t        j                  d      }t        j                  d      |dd | j                  j                  |d      }||d	| <   V d
}t        j                  t        |      5  t        |d       ddd       |j                  d      }t        |d      sJ t        j                          5  t        j"                  dt               t        |d       ddd       y# 1 sw Y   nxY w# 1 sw Y   yxY w)zDTest that check_array warns on pandas dataframe with sparse columns.r   col_0r   r   rX   r   N)
fill_valuecol_z+pandas.DataFrame with sparse columns found.r   Tr`  r  rb  rS  )rP   r   r#  rJ   linspacer_  r  rd   arraysSparseArrayr  r  r   dropr   rT  rU  rV  )r   r  rO  rJ  r   s        rT   ,test_check_array_pd_sparse_dataframe_warningr    s   			X	&B 
wAq" 56	7B1a[hhrl))A,BQii##CA#6T!:	  8C	k	-Bd+ 
. 
	!B2x   		 	 	"g{3Bd+ 
#	" 
.	- 
#	"s   >D9(E9EEzntype1, ntype2)	)
longdoublerC  )rC  re   )re   double)rk   rc   )rc   long)byterm   )ushortrn   )rn   uint64)rl   rj   c                     t        j                  d      }|j                  |j                  j	                  g d| d      |j                  j	                  g d|d      d      }t        |ddg	       y
)zWCheck that pandas.DataFrame having sparse extension arrays with mixed dtypes
    works.r   r   r   r   r   rZ   r  r   r   r   col1col2r   rf  r`  N)rP   r   r#  r  r  r   )ntype1ntype2r   r  s       rT   %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  re   rh   rj   r  shortrk   intcrc   intpr  r   rg   longlongint_ubyterl   rm   r  uintcrn   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   rf  r`  )	rP   r   r#  r  r  r   rJ   
issubdtyperZ   )r  r  expected_subtyper   r  rJ  s         rT   test_check_pandas_sparse_validr    s    . 
		X	&B	II)))6a)PII)))6a)P	

B b
7C==$4555r   )r  rq  r   r   
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   r>  rW   N)r   r9   r`  s     rT   test_num_featuresr    s.     
IA1./Aq   r   r   r   )FTF)r  g333333@g      @r   r   r!  )r   r  ri   r   dict)r  rq  r   r\  c                 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   r  r  r   r  r  rP   rQ   r   r9   )ry   r[  expected_type_namemessages       rT   &test_num_features_errors_1d_containersr    s     	1./A7",	X	%--
?@R?ST  q'299/00	AaD#	77	AaD$	88	y	0a 
1	0	0s   B**B3)r   r   Fr  )r   r  ri   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  rP   rQ   r   r9   )ry   r   s     rT    test_num_features_errors_scalarsr    s;    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  rS  N)rP   r   r#  rT  rU  rV  r  r7   )r  r   ry   s      rT   2test_get_feature_names_pandas_with_ints_no_warningr"    sy     
		X	&B
q!fq!fq!f-u=A		 	 	"g}5"1% 
# == 
#	"s   &A99Bzconstructor_name, minversion))rc  z13.0.0)r   z1.5.0)rd  z0.18.2c                 h    g dg dg}g d}t        || ||      }t        |      }t        ||       y)z'Test _get_features_names on dataframes.)r   r   r]   )rW   rW   r   )r  col_1col_2)column_namesr2  N)r   r7   r!   )r[  r2  r   r3  r  feature_namess         rT   #test_get_feature_names_4_dataframesr(  "  s=     y!D)G	W
B 'r*M}g.r   c                  X    t        j                  g dg dg      } t        |       }|J y)z/Get feature names return None for numpy arrays.r   r>  N)rJ   r   r7   )ry   r  s     rT   test_get_feature_names_numpyr*  2  s)    
)Y'(Aq!E==r   znames, dtypesz['int', 'str']pizzar  z['str', 'tuple']zstr-intz	str-tuplec                    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)rP   r   r#  r  r  rQ   r   r7   )r  r   r   ry   r   s        rT   %test_get_feature_names_invalid_dtypesr-  9  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)rE   r  s      rT   r   zPassthroughTransformer.fitS  s    dAT*r   c                     |S r  ra  )r  ry   s     rT   	transformz PassthroughTransformer.transformW  s    r   c                     t        | |      S r  )r.   )r  input_featuress     rT   get_feature_names_outz,PassthroughTransformer.get_feature_names_outZ  s    &t^<<r   r  )r   r  r  r   r3  r6  ra  r   rT   r/  r/  R  s    =r   r/  )r[  r'  r   r   )x0x1x2z*input_features should have length equal tor   zinput_features is not equal tord  c                    t        j                  g dg      }t        || g d      }t               j	                  |      }|j                         }t        ||       |dd }t        j                  t        |      5  |j                  |       ddd       |`
| dk(  r5t        j                  t        d      5  |j                          ddd       yt        |j                         |       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  r   )r&  Nr]   r   r   z Unable to generate feature names)rJ   r   r   r/  r   r6  r!   rP   rQ   rR   n_features_in_)r[  r'  r   ry   r  r  incorrect_len_namess          rT   test_check_feature_names_inr=  ^  s     	/"#A1._MA
 
"
&
&q
)C%%'Eum,'+	z	-!!"56 
. 	7"]]:-OP%%' QP 	3446F 
.	- QPs   >C/:C;/C8;D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)rP   rQ   r  r2   r	   )r   s    rT   )test_check_response_method_unknown_methodr@  |  s8     	V  
~W	5468HI 
6	5	5s	   <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)rP   rQ   r  r2   r   )rA  r   s     rT   8test_check_response_method_not_supported_response_methodrG    sB     B/ARRST  
~W	5/1?C 
6	5	5s   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.rC  mocking_datarB  rD  zD_MockEstimatorOnOffPrediction has none of the following attributes: z, rF  r   N)rB  rD  rC  )r   joinrP   rQ   r  r2   )method_implementedmy_estimatorry   rA  r   method_name_predictings         rT   #test_check_response_method_list_strrN    s    )*01CDLA +I6ON99_%
&a	)  
~W	5=|_=a@ 
6 +O<OR3L/RSTU!_444 *9501CDLGOR3L/RSTU!Y... 
6	5s   B**B3c                      t        j                  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)rP   r   r   r   rJ   r   rZ   r!   )r   r  expecteds      rT   #test_boolean_series_remains_booleanrQ    s]    			X	&B
biiu.%
@Cxxu&H99&&&sH%r   input_values)r   r   r   r   r   r   c                     t        j                  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   Int32rY   NF)rZ   r   r   r   )
rP   r   r   r   rJ   r  rZ   rP  floatingr   )rR  r   input_seriesr  s       rT   !test_pandas_array_returns_ndarrayrW    sm     
		X	&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   rW   rY   Tr  r   r   Nzinfinity or a value too large)
rP   r   r   rv   re   r   rQ   rR   r   r  )r  X_nanX_infs      rT   )test_check_array_array_api_has_non_finiter\    s     
		/	0BJJABFFA7rzzJJE	4	0]]:-BC D 
1 JJABFFA7rzzJJE	4	0]]:-LM N 
1	0	 DC 
1	0 NM 
1	0sH   D7DDD54D) D5D	DD&)D2	.D55D>zextension_dtype, regular_dtype))r  ri   )r8  rg   )r0  rh   )r  ro   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   rY   )rA  r   r@  r   rg   )r   r!  r  ro   r   r   )r   N)rP   r   r#  r   assignrf   r   r!   )extension_dtyperegular_dtyper]  r   	X_regularX_extensionX_regular_checkedX_extension_checkeds           rT   $test_check_array_multiple_extensionsrf    s     
		X	&B<}=<w7	
I #7xH	#""Ys^%:%:?%K"LK#IT:%k>(*=>r   r  output_format)r   rf  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   rY   offsetsrr  rs  rt  ru  r`  r   N)rJ   rh   r   ri  rf   rc   rr  rt  ru  r   rZ   rs  )r  rg  ry   r   s       rT   1test_check_array_dia_to_int32_indexed_csr_csc_coorj    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   rJ   r   rZ   rP  r   )rk  outs     rT   test_to_object_arrayro  	  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eggrr  )r   r   r   r   
continuousrX   g      4@
multiclassr   )r   r   r]   r]   r   r   r]   rW   zmultilabel-indicatorr  )r   r   r   zmulticlass-multioutputr^   r   zcontinuous-multioutput   )r   rW   )rq  ru  rt  )	rJ   rd   r   r!   rC   r   rP   rQ   rR   )EXAMPLESy_typer   s      rT   test_column_or_1dry  	  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                  ^   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)rJ   rK   uniformr   r"  r   	writeable)ry   rn  s     rT   test_check_array_writeable_npr  6	  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   r{  zw+r  FTr}  r  N)rJ   rK   r  r"   r   r"  r   r  )ry   mmaprn  s      rT   test_check_array_writeable_mmapr  I	  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   r{  Fr[   Tr}  N)
rP   r   rJ   rK   r  r#  r   r"  r   r  )r   ry   r  rn  s       rT   test_check_array_writeable_dfr  _	  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  r`  )rr   r   r   r  r   rP   rQ   r   )X_sps    rT   8test_check_array_on_sparse_inputs_with_array_api_enabledr  v	  si    <<I./D	4	0{{;t4@AAA]]9% & 
1	0 &% 
1	0s#   <B$B0BB
	BB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   rB  r  r  s      rT    test_check_array_allow_nd_errorsr  	  s*    " 
z)?	@A+ 
A	@	@s   3<categorical_featuresr  s   hellos   worldzMcategorical_features must be an array-like of bool, int or str, got: bytes40.g?zRcategorical_features must be an array-like of bool, int or str, got: bytes, float.zJcategorical_features set as integer indices must be in [0, n_features - 1])TTFFTzHcategorical_features set as a boolean mask must have shape (n_features,)c                     t         j                  j                  d      }d\  }}|j                  dd||f      }t	        j
                  t        |      5  t        ||        ddd       y# 1 sw Y   yxY w)z<Test that check_categorical_features raises expected errors.r   r   rW   r{  r   N)rJ   rK   rN   rO   rP   rQ   rR   r-   )r  r  rng	n_samples
n_featuresry   s         rT   &test_check_categorical_features_raisesr  	  sa    F ))


"C"IzAq	:67A	z	6#A';< 
7	6	6s   A,,A5on_arrayFTTF)
from_dtypeF)r   r   rd  c                    t         j                  j                  d      }d\  }}|j                  dd||f      }|dk(  r|sy|dk(  r|j	                  t
              }t        ||g dd	d
g      }t        ||       }t        |g d       y)zHTest that check_categorical_features returns as expected on simple data.r   )rv  r   rW   r{  r   Nrd  r  r   r!  )r&  categorical_feature_namesr  )	rJ   rK   rN   rO   rf   r  r   r-   r   )r  r  r[  r  r  r  ry   r  s           rT   test_check_categorical_featuresr  	  s     ))


"C!IzAq	:67A7"8	X	%HHSM	)#&*		A ),@AFF67r   c                  p    t        j                  d       ddlm}  t	         | g dg            }|dk(  sJ y )Nrc  r   )chunked_array)r_   rI  g333333?rW   )rP   r   rc  r  r:   )r  r  s     rT   !test_num_samples_pa_chunked_arrayr  	  s1    
	"%-(9:;FQ;;r   )__doc__rr  r  rT  	itertoolsr   operatorr   tempfiler   numpyrJ   rP   scipy.sparserb  rr   r  sklearn._configr   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   r   sklearn.utils._mockingr   r   sklearn.utils._testingr   r   r   r   r    r!   r"   r#   sklearn.utils.estimator_checksr$   sklearn.utils.fixesr%   r&   r'   r(   r)   r*   sklearn.utils.validationr+   r,   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   rU   r   markparametrizerK   r   r   r   r   r  rv   r   r   
csr_matrixr   r   r   r   r   ro   r   r   filterwarningsr	  r  r)  re   rh   r6  r<  rG  rM  rQ  r^  rc  re  fixturerw  rz  r|  r  r  r  r  r  r  r  r  r  rq  r  r  r  r  r  r  r  r
  r  r  r  r  r$  r   rR   r  r=  rs   
coo_matrix
lil_matrix
bsr_matrix
dok_matrix
dia_matrixru   r  r  r  r  	dia_arrayr?  rC  rZ  ra  ri  ru  r   r   rs  Integralri   r   r  _psd_cases_validr%  keysr  _psd_cases_invalidr  r  r  r  r  r  r  r  	CS_SPARSEr  r  r  r  r  r  r  r  r  r  rU  integerunsignedintegerr  r  r  r  r_  r"  r(  r*  r-  r/  r=  r@  rG  rN  rQ  rW  r\  rf  rj  ro  ry  r  r  r  r  r  r  r  r  r  ra  r   rT   <module>r     s   *  	    '     * & ' 2 F . F 2 ;   
	 	 	 7        >0$(%V "))

7
#%9'%%P	Q11F ,& ffe_rvv{+bffe_= BJJbmm#LM/ N	
/ 5	T45	d78	$(OP	k#>?	T/0	d23	d23FF?		
 
Q,-& BJJbmm#LM
 N'(
 'BCBJJbmm#LM%1 N 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:	(	(-D 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+< 
















(
")(
"	; D M   G 	  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 + :  		"	"	$%$$&'  
(
('MT- .-/(	( QC!Q"a)\#RS; T; .-/ QC!Q"a)\#RS< T	
< Iuq"g#>?< @< .-/ Iuq"g#>?	= @	
	= \\2==",,F	 RXXJ$:;( <( RXXJ$:;, <, I.% /%60 TAq6N3 4: &HI1 J1",4 

2
2 &	<-	9bkk*	9bkk*	$	'2::&	"**%	$	

#	*bjj)	$	'2--.	8R//0	(B../	2--.	+r112(6)(6 D!	! 
qC8c1X& 	0  
 +-QR S
* 28WX Y 	%(^U1XtsCj3*%=>6  

 "F	/		/ 
q#$
:	 23 
K   &&"	=] 	= 0	$&RS	?$DE	?$DEGG,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 BHH1v1v&!Q!Q(89:!#%	
 BHH1v1v&!Q!Q(89:A	
 ,! ,
 ^, x BII 	
 BHHh_F3BII%	
 GBII&	
 -BII 	
- B=C B= Z(	#T*
Q
sU	 +-JK8 L8(r   