
    ri(;                    "   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
ZddlZddlmZ ddlmZ ddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ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/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb d Zcd Zdej                  j                  dej                  j                  d       ej                  ddd      g      d         Zhd! Zid" Zjd# Zkej                  j                  d$ej                  d%fej                  d&fej                  d%fg      ej                  j                  d'ej                  ej                  g      d(               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+d0fej                  dd+d1fej                  d2d+d3fej                  d*d4d5fej                  d*d6d0fg	      ej                  j                  d'ej                  ej                  g      d7               Zqej                  j                  d8g d9      ej                  j                  d'ej                  ej                  g      d:               Zrd; Zsej                  j                  d< ej                  d6ej                  gg      d=f ej                  d6ej                  gg      d=f ej                  d6ej                  gg      d>f ej                  d6ej                  ggeu?      d@fg      ej                  j                  dAd+d%g      dB               ZvdC Zwej                  j                  dD      dE        Zyej                  j                  ddFdGgdHdIgg ej                  dFdGgdHdIggdJ?       ej                  dFdGgdHdIggdK?      dLdMgdNdOgg ej                  dLdMgdNdOggdP?      g      dQ        Zzej                  j                  dRg dS      ej                  j                  dTej                  ej                  gej                  fej                  ej                  fdUej                  fg      dV               Z}dW Z~dX ZdY ZdZ Zd[ Zd\ Zd] Z ej
                  g d^_      d`        Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zej                  j                  dk ed      eegg dlm      dn        Zdo Zej                  j                  dp e2       e0m      dq        Zdr Zds Zdt Zej                  j                  duej                  ej                  fej                  ddUf      ej                  j                  dvdw      dx               Zdy Zdz Z G d{ d|      Z G d} d~      Zd Zej                  j                  dd+d%g      d        Zej                  j                  dd edddd+i      dd+dfd edddd+i      dd+dfd edddd+i      gdgd+dfd edddd+i      dgd+dfd edddd+i      ddefd edddd+i      ddefgg dm      d        Zej                  j                  d'ej                  ej                  ejH                  ejJ                  ejL                  ejN                  ejP                  ejR                  g      d        Zd Zd Zej                  j                  dg d      d        Zej                  j                  dd6deddd ed      fddej`                  ddd ed      fddejb                  ddd ed      fd6deefddd ed      fd6deddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fddeddd ed      fg      d        Zd ej                  d6dg      dd*f ej                  d6dg       ej                  d6dg      dd*fd ej                  ddg      edfd ej                  ddg      ed*f ej                  d6dgej                  ?       ej                  d6dgej                  ?      edf ej                  d6dgej                  ?       ej                  d6dgej                  ?      edfd ej                  ddg      edfdZej                  j                  d eejm                                eejo                               m      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jm                                eejo                               m      dɄ        Zdʄ Zd˄ Zej                  j                  d e2             d̈́        Zej                  j                  ddgdd6gdd6gg dТg dѢg      d҄        Zej                  j                  d e2       e0m      ej                  j                  ddgdd6gdd6gg dТg dѢg      dӄ               Zej                  j                  dg dԢdgddgg      dք        Zej                  j                  d e2       e0m      ej                  j                  dg dԢdgddgg      dׄ               Zej                  j                  dej                  ej                  ejH                  g      dل        Zej                  j                  dej                  ej                  ejH                  g      dڄ        Zej                  j                  dej                  ejH                  g      dۄ        Zd܄ Zd݄ Zdބ Zej                  j                  ddd6dgg      d        Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  j                  dddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fddej                  fd dej                  fddej                  fg      d        Zej                  j                  dg d      d        Zej                  j                  dg dg d	g d
g ddd6iddiddiggg dm      ej                  j                  dg d      d               Zej                  j                  dg dg dm      d        Zej                  j                  d e ed             ed      dddgddgggg dm      d        ZӐd Zej                  j                  dg d      d        ZՐd Zej                  j                  ddd6gdfd ddggd!fgd"d#gm      d$        Z G d% d&e      Zؐd' Zِd( Zڐd) Zej                  j                  d*g d+      d,        Zܐd- Zݐd. Zej                  j                  d/dd6dd6dej                  gg d0g      d1        Ze?d2        Zej                  j                  d3g d4      ej                  j                  d5d+d%g      d6               Zd7 Zej                  j                  d8eEeDz   eCz   eFz         ej                  j                  d9g d:      d;               Zej                  j                  d< ej                  d6       ej                  d      gd6dgddggg      d=        Zd> Zd? Zd@ ZdA Ze?dB        Zej                  j                  g dC ej                  d6dgddggd6dgddggg       e       dDf ej                  d6dgddggd6dgddggg      ddEfg      dF        Zy(G  z$Tests for input validation functions    N)product)
itemgetter)NamedTemporaryFile)importorskip)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)_convert_to_numpy_get_namespace_device_dtype_ids_is_numpy_namespace)yield_namespace_device_dtype_combinations)MockDataFrame_MockEstimatorOnOffPrediction)	SkipTest
TempMemmap_array_api_for_tests_convert_containerassert_allcloseassert_allclose_dense_sparseassert_array_equalcreate_memmap_backed_data'skip_if_array_api_compat_not_configured)_NotAnArray)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDIA_CONTAINERSDOK_CONTAINERS)FLOAT_DTYPES_allclose_dense_sparse_check_feature_names_in_check_method_params_check_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)
rB   nprandommtrand_randRandomStaterandintpytestraises
ValueError)rng_42s    a/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/sklearn/utils/tests/test_validation.pytest_make_rngrV   _   s   d#ryy'7'7'='====bii(BII,<,<,B,BBBBYY""2&Fb!))#.&..2EEEEYY""2&Ff%///YY""2&Fb!))#.&..2EEEE	z	" 0./0 0 0s   E''E0c                     t        j                  dt         j                        } | t        j                  dt         j                        z   } t	        | d      }|j
                  t         j                  k(  sJ | j                  t         j                        } t	        | d      }t	        | d      | usJ |j
                  t         j                  k(  sJ t        t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  g}|D ]=  }| j                  |      } t	        |       }|j
                  t         j                  k(  r=J  | j                  t               } t	        | d      }|j
                  t         j                  k(  sJ t        j                  dt         j                        } t	        | d      | u sJ t        j"                  |       } t        j$                  t	        | d            sJ t'        j(                  t        j                  d            j+                         t-        ddd	
      j+                         g}|D ]G  }t	        |d      }t         j.                  |d<   t        j0                  |      j3                         sGJ  y )N)   
   dtyperY   FcopyT)rX         皙?)densityr   r   )rK   onesint32aranger   r[   float32astypeint64float64boolint8int16uint8uint16uint32objectasfortranarray	isfortransp
csc_matrixtoarrayr   nanisnanany)XX2tested_dtypesr[   matricesMNs          rU   test_as_float_arrayr   q   s   
rxx(A	BIIb))A		&B88rzz!!!	A		%B!%(11188rzz!!!277BHHbhh"))RYYWM &HHUOAxx2::%%%& 	
A		%B88rzz!!! 	bjj)A!%(A---
!A<<qt4555 	biil#++-b"d3;;=H  %14(&&$88A;??$$$%    ry   rY   r^   rY   r^   csrformatc                     | j                         } t        j                  | d<   t        j                  | d<   t        | d      }t	        ||        y )N)r_   r   )      	allow-nanensure_all_finite)r]   rK   rv   r   r#   )ry   X_converteds     rU   test_as_float_array_nanr      s?     	
AffAdGffAdG kBK a0r   c                     t        j                  d      j                  dd      } t        t	        |       t         j
                        rJ t        t	        t        j                  |             t         j
                        rJ y )N   rX      )rK   re   reshape
isinstancer   matrixrs   rt   ry   s    rU   test_np_matrixr      sZ    
		"a#A.+RYY777.q)9:BIIFFFFr   c                  P   d } t        d      5 }t        j                  |dt        j                        }d|d d  t        t        j
                  | fD ]<  } ||      }d|d d  t        |j                         |j                                d|d d  > 	 d d d        y # 1 sw Y   y xY w)Nc                     t        | d      S )NFr\   )r   )xs    rU   <lambda>ztest_memmap.<locals>.<lambda>   s    nQU3 r   zsklearn-test)prefixrY   rY   )shaper[   r   r   )r   rK   memmaprf   r   asarrayr$   ravel)asflttmpr}   fry   s        rU   test_memmapr      s     4E	>	2 cIIc<!rzz51 	A!AAaDqwwy!'')4AaD			  s   BBB%c                  ~   t        j                  d      } | | j                  fD ]P  }dD ]I  }t        |d|      }|j                  d   sJ t        |d|      }|j                  d   sJ |sD||urIJ  R t        j                  |       } | j                  d d d   | _        | j                  j                  d   rJ y )	N)rY   r_   )TFC)orderr]   C_CONTIGUOUSFF_CONTIGUOUS)rK   rc   Tr   flagsrs   
csr_matrixdata)ry   Ar]   Bs       rU   test_orderingr      s     	AV "! 	"DASt4A77>***ASt4A77>***z!z	"" 	aAVVDbD\AFvv||N++++r   zvalue, ensure_all_finiteFr   retypec                      |t        j                  d      j                  dd      j                  t                    }| |d<   t        ||d      }t        ||       y )Nr   r^   rb   T)r   accept_sparse)rK   re   r   rg   floatr   r#   )valuer   r   ry   	X_checkeds        rU   (test_check_array_ensure_all_finite_validr      sQ     	ryy|##Aq)0078AAdGA1BRVWI I.r   z/value, input_name, ensure_all_finite, match_msg TzInput contains infinityzInput X contains infinitysample_weightz%Input sample_weight contains infinityInput contains NaNzInput X contains NaNyzInput y contains NaNz	allow-infz1ensure_all_finite should be a bool or 'allow-nan'r   c                     |t        j                  d      j                  dd      j                  t         j                              }| |d<   t        j                  t        |      5  t        |||d       d d d        y # 1 sw Y   y xY w)Nr   r^   rb   matchT)
input_namer   r   )	rK   re   r   rg   ri   rQ   rR   rS   r   )r   r   r   	match_msgr   ry   s         rU   *test_check_array_ensure_all_finite_invalidr      sr    . 	ryy|##Aq)00<=AAdG	z	3 
!/		

 
 
s   )BBr   )ry   r   r   c                 (    |t        j                  d      j                  dd      j                  t         j                              }t         j
                  |d<   t               }d|j                  j                   d}t        j                  t        d|  d      5 }t        ||| d	
       d d d        | dk(  r|j                  j                  d   v sJ |j                  j                  d   vsJ | dk(  rt        j                  t        d|  d      5 }t               j                  |t        j                   |j"                  d                d d d        ||j                  j                  d   v sJ y y # 1 sw Y   xY w# 1 sw Y   4xY w)Nr   r^   rb   
aX   does not accept missing values encoded as NaN natively. For supervised learning, you might want to consider sklearn.ensemble.HistGradientBoostingClassifier and Regressor which accept missing values encoded as NaNs natively. Alternatively, it is possible to preprocess the data, for instance by using an imputer transformer in a pipeline or drop samples with missing values. See https://scikit-learn.org/stable/modules/impute.html You can find a list of all estimators that handle NaN values at the following page: https://scikit-learn.org/stable/modules/impute.html#estimators-that-handle-nan-valueszInput z contains NaNr   T)	estimatorr   r   ry   r   )rK   re   r   rg   ri   rv   r   	__class____name__rQ   rR   rS   r   r   argsfitrc   r   )r   r   r   r   extended_msgctxs         rU   0test_check_array_links_to_imputer_doc_only_for_Xr      sh    "))A,&&q!,33BJJ?@DDJI
Y  ))* +- 	-  
z6*])K	L 
PS!		

 Ssyy~~a0000399>>!#4444S ]]:vj\-OP 	4TWEIIdBGGDJJqM23	4syy~~a0000 
 
 	4 	4s   E<;F<FFc                  >   t        j                  ddt         j                  ggt              j                  } t        | d d      }| |u sJ t        | d d      }| |u sJ t        j                  t        d      5  t        | d d	       d d d        y # 1 sw Y   y xY w)
NabrZ   r   r[   r   Fr   r   T)	rK   arrayrv   rp   r   r   rQ   rR   rS   )ry   r   s     rU   )test_check_array_ensure_all_finite_objectr   )  s    
3RVV$%V466AAT[II	>>ATUCI	>>	z)=	> ;ATT:; ; ;s   ;BBz
X, err_msgInput contains NaN.z5Input contains infinity or a value too large for.*intrZ   z#cannot convert float NaN to integerr   c                     t        j                  t        |      5  t        | t        |       d d d        y # 1 sw Y   y xY w)Nr   r   )rQ   rR   rS   r   int)ry   err_msgr   s      rU   8test_check_array_ensure_all_finite_object_unsafe_castingr   6  s8    0 
z	1 GAS4EFG G Gs	   8Ac                      t        j                  d      } | j                  g d      }dt        |       d}t        j                  t
        |      5  t        |d       ddd       y# 1 sw Y   yxY w)	z
    Check that we raise a proper error message when passing a Series and we expect a
    2-dimensional container.

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

X_int_list	X_float32r,  X_csr_float32X_csc_float32X_csc_int32integer_datafloat32_datary   r   s
             rU   test_check_array_dtype_warningrO  j  s   Y	2J

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

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

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

    Column names with consistent dtypes will not warn, such as int or MultiIndex.
    r   r   r^   r   r_   r   r  rD  N)rQ   r   r%  rE  rF  rG  r  r8   )r  r   ry   s      rU   2test_get_feature_names_pandas_with_ints_no_warningr    s     
		X	&B
q!fq!fq!f-u=A		 	 	" &g}5"1%& ==& &s   &A99Bc                      t        j                  d      } t        d      D cg c]  }d| 	 }}| j                  g dg dg|      }t	        |      }t        ||       yc c}w )z)Get feature names with pandas dataframes.r   rX   col_r   r0  r  N)rQ   r   r  r%  r8   r$   )r   r@  r$  ry   feature_namess        rU   test_get_feature_names_pandasr     s_    			X	&B#(8,aaSz,G,
i+W=A&q)M}g.	 -s   A"zconstructor_name, minversion))pyarrowz12.0.0)r  z1.5.0)polarsz0.18.2c                 h    g dg dg}g d}t        || ||      }t        |      }t        ||       y)z:Uses the dataframe exchange protocol to get feature names.)r   r   r^   )rX   rX   r   )col_0col_1col_2)columns_namer!  N)r!   r8   r$   )r  r!  r   r$  r  r  s         rU   )test_get_feature_names_dataframe_protocolr    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   r0  N)rK   r   r8   )ry   r  s     rU   test_get_feature_names_numpyr
    s)    
)Y'(Aq!E==r   znames, dtypesz['int', 'str']pizzaz['list', 'str']zint-strzlist-strc                    t        j                  d      }|j                  ddgddgddgg|       }t        j                  d| d	      }t        j
                  t        |
      5  t        |      } ddd       y# 1 sw Y   yxY w)zAGet feature names errors when the feature names have mixed dtypesr   r   r^   r   r_   r   r  z]Feature names are only supported if all input features have string names, but your input has a.   as feature name / column name types. If you want feature names to be stored and validated, you must convert them all to strings, by using X.columns = X.columns.astype(str) for example. Otherwise you can remove feature / column names from your input data, or convert them all to a non-string data type.r   N)rQ   r   r%  rr  rs  rR   r   r8   )r  r   r   ry   r   s        rU   %test_get_feature_names_invalid_dtypesr    s     
		X	&B
q!fq!fq!f-u=A
))	$X &?	?C 
y	, &"1%& & &s   &A;;Bc                   "    e Zd ZddZd ZddZy)PassthroughTransformerNc                 "    t        | |d       | S )NT)reset)rF   r  s      rU   r   zPassthroughTransformer.fit  s    dAT*r   c                     |S r  rR  )r  ry   s     rU   	transformz PassthroughTransformer.transform  s    r   c                     t        | |      S r  )r/   )r  input_featuress     rU   get_feature_names_outz,PassthroughTransformer.get_feature_names_out  s    &t^<<r   r  )r   r  r  r   r  r  rR  r   rU   r  r    s    =r   r  c                     t        j                  g dg      } t               j                  |       }|j	                         }t        |g d       ddg}t        j                  t        d      5  |j	                  |       ddd       |`	t        j                  t        d      5  |j	                          ddd       y# 1 sw Y   @xY w# 1 sw Y   yxY w)	z4Check behavior of check_feature_names_in for arrays.r  r  r  )x0x1x2x10r  z*input_features should have length equal tor   Nz Unable to generate feature names)
rK   r   r  r   r  r$   rQ   rR   rS   n_features_in_)ry   r  r  incorrect_len_namess       rU   test_check_feature_names_inr    s    
/"#A
 
"
&
&q
)C%%'Eu01 $-	z)U	V 7!!"567 		z)K	L $!!#$ $7 7
$ $s   /C &C C	Cc                  V   t        j                  d      } g d}| j                  g dg|      }t               j	                  |      }|j                         }t        |g d       t        j                  t        d      5  |j                  g d       ddd       y# 1 sw Y   yxY w)	z?Check behavior of check_feature_names_in for pandas dataframes.r   r"  r  r  zinput_features is not equal tor   )r  r  x3N)	rQ   r   r%  r  r   r  r$   rR   rS   )r   r  r  r  s       rU   "test_check_feature_names_in_pandasr"  	  s    			X	&BE	'	7B
 
"
&
&r
*C%%'Euo.	z)I	J 6!!"456 6 6s   BB(c                      d} t        j                  t        |       5  t        t	               d       ddd       y# 1 sw Y   yxY w)z@Check the error message when passing an unknown response method.zKRandomForestRegressor has none of the following attributes: unknown_method.r   unknown_methodN)rQ   rR   r  r3   r
   )r   s    rU   )test_check_response_method_unknown_methodr%    sE     	V  
~W	5 J468HIJ J Js	   <Aresponse_method)decision_functionpredict_probapredictc                     d|  d}t        j                  t        |      5  t        t	               |        ddd       y# 1 sw Y   yxY w)zUCheck the error message when a response method is not supported by the
    estimator.z7EstimatorWithFit has none of the following attributes: .r   N)rQ   rR   r  r3   r   )r&  r   s     rU   8test_check_response_method_not_supported_response_methodr,     sO     B/ARRST  
~W	5 D/1?CD D Ds   A  A	c                  l   dg} t        |       }d}ddg}ddj                  |       d}t        j                  t        |      5   t        ||      |       d	d	d	       ddg} t        ||      |      }|dk(  sJ ddg} t        |       }g d
} t        ||      |      }|dk(  sJ y	# 1 sw Y   SxY w)z0Check that we can pass a list of ordered method.r(  mocking_datar'  r)  zD_MockEstimatorOnOffPrediction has none of the following attributes: z, r+  r   N)r'  r)  r(  )r   joinrQ   rR   r  r3   )method_implementedmy_estimatorry   r&  r   method_name_predictings         rU   #test_check_response_method_list_strr3  -  s    )*01CDLA +I6ON99_%
&a	)  
~W	5 A=|_=a@A +O<OR3L/RSTU!_444 *9501CDLGOR3L/RSTU!Y...A As   B**B3c                      t        d      } t        | j                  ddg      d      }t        j                  ddg      }|j
                  |j
                  k(  sJ t        ||       y)zRegression test for gh-25145r   TFr   N)r   r   r   rK   r   r[   r$   )r   r  expecteds      rU   #test_boolean_series_remains_booleanr6  J  sW    	h	B
biiu.%
@Cxxu&H99&&&sH%r   input_values)r   r   r   r   r   r   c                     t        d      }|j                  | d      }t        |dddd      }t        j                  |j
                  j                  t        j                        sJ t        ||        y)zpCheck pandas array with extensions dtypes returns a numeric ndarray.

    Non-regression test for gh-25637.
    r   Int32rZ   NF)r[   r   r   r   )	r   r   r   rK   r  r[   rA  floatingr"   )r7  r   input_seriesr  s       rU   !test_pandas_array_returns_ndarrayr<  T  sg     
h	B88L88LF ==**BKK888FL)r   c                     t        j                  d      } | j                  | j                  ddgd| j                  dgg| j                        }t        d      5  t        j                  t        d	      5  t        |       d
d
d
       d
d
d
       | j                  | j                  ddgd| j                  dgg| j                        }t        d      5  t        j                  t        d	      5  t        |       d
d
d
       d
d
d
       y
# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y
xY w)z9Checks that Array API arrays checks non-finite correctly.array_api_strictr   r   rX   rZ   Tr  r   r   Nzinfinity or a value too large)
rQ   r   r   rv   rf   r   rR   rS   r   r  )r  X_nanX_infs      rU   )test_check_array_array_api_has_non_finiterA  g  s    
		/	0BJJABFFA7rzzJJE	4	0 ]]:-BC 		 JJABFFA7rzzJJE	4	0 ]]:-LM 		 		 	 	 	 sH   D7DDD54D) D5D	DD&)D2	.D55D>zextension_dtype, regular_dtype))r  rj   )r*  rh   )r  ri   )r  rp   include_objectc                 j   t        j                  d      }|j                  |j                  g d|      |j                  g dd      d      }|r|j                  g dd      |d	<   |j	                  |d
   j                  |             }t        |d      }t        |d      }t        ||       y)zKCheck pandas extension arrays give the same result as non-extension arrays.r   )r   r   r   r   rZ   )r3  r   r2  r   rh   )r   r#  r  rp   r   r   )r   N)rQ   r   r%  r   assignrg   r   r$   )extension_dtyperegular_dtyperB  r   	X_regularX_extensionX_regular_checkedX_extension_checkeds           rU   $test_check_array_multiple_extensionsrK  w  s     
		X	&B<}=<w7	
I #7xH	#""Ys^%:%:?%K"LK#IT:%k>(*=>r   c                  ~    t        j                  d      } | j                  g dg dd      }t        |      dk(  sJ y)zDUse the DataFrame interchange protocol to get n_samples from polars.r  r   r0  r  rX   N)rQ   r   r%  r;   )plr  s     rU   #test_num_samples_dataframe_protocolrN    s8    			X	&B	II6	7Bq   r   r   output_format)r   rW  r   c                     | ddgddggt         j                        }t        |d      r/|j                  j	                  t         j
                        |_        nt        |d      r;t        |d      r/|j                  j	                  t         j
                        |_        ntt        |d      rht        |d      r\|j                  j	                  t         j
                        |_        |j                  j	                  t         j
                        |_        t        ||	      }|d
k(  rS|j                  j                  t         j
                  k(  sJ |j                  j                  t         j
                  k(  sJ y|j                  j                  t         j
                  k(  sJ |j                  j                  t         j
                  k(  sJ y)zGCheck the consistency of the indices dtype with sparse matrices/arrays.r   r   rZ   offsetsrc  rd  re  rf  rQ  r   N)rK   ri   r   rQ  rg   rd   rc  re  rf  r   r[   rd  )r   rO  ry   r   s       rU   1test_check_array_dia_to_int32_indexed_csr_csc_coorR    s?    	1a&1a&)<A q)II$$RXX.		E	wq%0RXX&	I	71h#7II$$RXX.	88??288,A];I}}""bhh...}}""bhh...  &&"((222%%111r   sequencec                     t        |       }t        |t        j                        sJ |j                  j
                  dk(  sJ |j                  dk(  sJ y )NOr   )r<   r   rK   r   r[   rA  r   )rS  outs     rU   test_to_object_arrayrW    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eggrZ  )r   r   r   r   
continuousrY   g      4@
multiclassr   )r   r   r^   r^   r   r   r^   rX   zmultilabel-indicatorr  )r   r   r   zmulticlass-multioutputr_   r   zcontinuous-multioutput   )r   rX   )rY  r]  r\  )	rK   re   r   r$   rD   r   rQ   rR   rS   )EXAMPLESy_typer   s      rU   test_column_or_1dra    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)rK   rL   uniformr   r  r   	writeable)ry   rV  s     rU   test_check_array_writeable_npri    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   rc  zw+r  FTre  r  N)rK   rL   rg  r%   r   r  r   rh  )ry   mmaprV  s      rU   test_check_array_writeable_mmaprl    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   rc  Fr\   Tre  N)
rQ   r   rK   rL   rg  r%  r   r  r   rh  )r   ry   r  rV  s       rU   test_check_array_writeable_dfrn  	  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  rQ  )rs   r   r   r  r   rQ   rR   r   )X_sps    rU   8test_check_array_on_sparse_inputs_with_array_api_enabledrq  	  sy    <<I./D	4	0 {{;t4@AAA]]9% 		 	 	 s#   <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   r6  r  rr  s      rU    test_check_array_allow_nd_errorsru  #	  s2    " 
z)?	@ ,A+, , ,s   3<)__doc__rQ  rr  rE  	itertoolsr   operatorr   tempfiler   numpyrK   rQ   scipy.sparser  rs   r   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   r   sklearn.utils._mockingr   r   sklearn.utils._testingr   r   r    r!   r"   r#   r$   r%   r&   sklearn.utils.estimator_checksr'   sklearn.utils.fixesr(   r)   r*   r+   r,   sklearn.utils.validationr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rV   r   markparametrizerL   r   r   r   r   r  rv   r   r   r   r   r   r   r   rp   r   r   filterwarningsr  r  rf   ri   r(  r.  r9  r>  rB  rO  rT  rV  fixturerh  rk  rm  rv  r  r  r  r  r  r  r  r  rb  r  r  r  r  r  r  r  r  r   r  r  r  r  r   rS   r  r1  rt   r  r  r  r  
dia_matrixr3  r7  rH  rT  r   r   rR  Integralrj   r   rd  _psd_cases_validvalueskeysro  _psd_cases_invalidrt  rx  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  integerunsignedintegerr  r  r  r  r  r  r   r  r
  r  r  r  r"  r%  r,  r3  r6  r<  rA  rK  rN  rR  rW  ra  ri  rl  rn  rq  ru  rR  r   rU   <module>r     s'   *  	    '      * & ' 2 F . F 2 ;   
 
 
 7       <0$'%T "))

7
#YRYYr1U%C	D11G ,& ffe_rvv{+bffe_= BJJ#>?/ @	
/ 5	T45	d78	$(OP	k#>?	T/0	d23	d23FF?		
 
Q,-& BJJ#>?
 @'(
 'BCBJJ#>?%1 @ D%1P
;  BHHq"&&k]#!	

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

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

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


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

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