
    -i                     z   S SK rS SKrS SKJr  S SKJrJrJr  S SK	J
r
JrJr  S SKJr  S rS r\R"                  R%                  S5      \R"                  R'                  S	\" 5       S
 S9S 5       5       r\R"                  R%                  S5      \R"                  R'                  S\R*                  SS /5      \R"                  R'                  S	\" 5       S S9S 5       5       5       r\R"                  R%                  S5      \R"                  R'                  S\R*                  S/5      \R"                  R'                  S	\" 5       S S9\R"                  R'                  S\5      S 5       5       5       5       r\R"                  R%                  S5      \R"                  R'                  S	\" 5       S S9\R"                  R'                  SSS/5      S 5       5       5       r\R"                  R'                  S	\" 5       S S9\R"                  R'                  SSS/5      S 5       5       r\R"                  R'                  SSS/5      \R"                  R'                  S	\" 5       S S9S 5       5       r\R"                  R'                  S	\" 5       S S9\R"                  R'                  S\R*                  S /5      S! 5       5       rg)"    N)enable_iterative_imputerIterativeImputer
KNNImputerSimpleImputer)assert_allcloseassert_allclose_dense_sparseassert_array_equal)CSR_CONTAINERSc                  :    [        SS9[        5       [        5       /$ )Ng?)tolr        S/var/www/html/venv/lib/python3.13/site-packages/sklearn/impute/tests/test_common.pyimputersr      s    %z|]_EEr   c                      [        5       /$ N)r   r   r   r   sparse_imputersr      s    Or   z-ignore::sklearn.exceptions.ConvergenceWarningimputerc                 .    U R                   R                  $ r   	__class____name__xs    r   <lambda>r          akk>R>Rr   )idsc                     S/S//nS/[         R                  //nU R                  SS9  U R                  U5      R	                  U5        g )N         Tadd_indicator)npnan
set_paramsfit	transform)r   traintests      r   +test_imputation_missing_value_in_test_arrayr,      sJ    
 S1#JEC"&&?DT*KK  &r   markerc                 .    U R                   R                  $ r   r   r   s    r   r   r   %   r   r   c           
         [         R                  " U SSU S/SU SU S/SSX S/SSSU S//5      n[         R                  " / SQ/ S	Q/ S
Q/ SQ/5      nUR                  U SS9  UR                  U5      n[	        US S 2SS 24   U5        [        UR                  R                  [         R                  " / SQ5      5        UR                  SS9  UR                  U5      n[	        US S 2S S24   U5        g Nr       r!      r"   	      )      ?        r7   r6   )r7   r6   r7   r6   )r7   r7   r6   r6   )r7   r7   r7   r6   T)missing_valuesr$   )r   r    r!   r"   Fr#   )r%   arrayr'   fit_transformr   r
   
indicator_	features_)r-   r   XX_true_indicatorX_transX_trans_no_indicators         r   test_imputers_add_indicatorrB   #   s    	Q61%61%61%1fa 		
	A xx    		
 fDA##A&GGArsFO%56w))33RXXl5KLU+"003GAssFO%9:r   c                 .    U R                   R                  $ r   r   r   s    r   r   r   F   s    0D0Dr   csr_containerc           
         U" USSUS/SUSUS/SSXS/SSSUS//5      nU" / SQ/ S	Q/ S
Q/ SQ/5      nU R                  USS9  U R                  U5      n[        US S 2SS 24   U5        [        U R                  R
                  [        R                  " / SQ5      5        U R                  SS9  U R                  U5      n[        US S 2S S24   U5        g r1   )r'   r;   r	   r
   r<   r=   r%   r:   )r   r-   rD   r>   r?   r@   rA   s          r   "test_imputers_add_indicator_sparserF   C   s     	Q61%61%61%1fa 		
	A %    		
 fDA##A&G BC2BCw))33RXXl5KLU+"003 CRC2FGr   c                 .    U R                   R                  $ r   r   r   s    r   r   r   g   r   r   r$   TFc           
      H   [         R                  " S5      n[        R                  nU R	                  XS9n [        R
                  " USSUS/SUSUS/SSX3S/SSSUS	//5      nU R                  U5      nUR                  US
/ SQS9nU R                  U5      n[        XW5        g )Npandasr$   r8   r    r2   r!   r3   r"   r4   r5   Int16)abcde)dtypecolumns)	pytestimportorskipr%   r&   r'   r:   r;   	DataFramer   )r   r$   pdr-   r>   X_trans_expectedX_dfr@   s           r   -test_imputers_pandas_na_integer_array_supportrY   f   s    
 
		X	&BVVF  } TG
Q61%61%61%1fa 		
	A ,,Q/ <<2K<LD ##D)G$.r   c                 .    U R                   R                  $ r   r   r   s    r   r   r      r   r   c                    [         R                  " S5      n[        R                  nU R	                  XS9n [        R
                  " USSSUS/SUSSUS/SSS	X3S/SSS
SUS//5      nUR                  U/ SQS9nU R                  U5        U R                  5       nU(       a  / SQn[        Xv5        g/ SQn[        Xv5        g)z%Check feature names out for imputers.rI   rJ   r    r2   r"   r!   r5   r3      r4      )rL   rM   rN   rO   rP   f)rR   )	rL   rM   rN   rO   r^   missingindicator_amissingindicator_bmissingindicator_dmissingindicator_e)rL   rM   rN   rO   r^   N)
rS   rT   r%   r&   r'   r:   rU   r(   get_feature_names_outr
   )r   r$   rV   r-   r>   rX   namesexpected_namess           r   &test_imputers_feature_names_out_pandasrf      s     
		X	&BVVF  } TG
Q1fa(1fa(1fa(1a#		
	A <<#A<BDKK))+E

 	>12>1r   keep_empty_featuresc                 .    U R                   R                  $ r   r   r   s    r   r   r      r   r   c                    [         R                  " [         R                  S/[         R                  S/[         R                  S//5      nU R                  SUS9n S Hj  n[	        X5      " U5      nU(       a  UR
                  UR
                  :X  d   eM9  UR
                  UR
                  S   UR
                  S   S-
  4:X  a  Mj   e   g)	z?Check that the imputer keeps features with only missing values.r    r!   r"   F)r$   rg   )r;   r)   r   N)r%   r:   r&   r'   getattrshape)r   rg   r>   method	X_imputeds        r   test_keep_empty_featuresrn      s     	2661+{RVVQK89A  1D ! G 1G,Q/	??agg---??qwwqz1771:>&BBBB 1r   c                 .    U R                   R                  $ r   r   r   s    r   r   r      r   r   missing_value_testr    c                 4   [         R                  " S[         R                  /SS//5      n[         R                  " SU/SS//5      nU R                  SS9  U R	                  U5        U R                  U5      nUR                  S:X  d   eU R                  SS9  U R	                  U5        U R                  U5      nUR                  S:X  d   e[        US	S	2S	S
24   U5        [         R                  " U5      (       a  SS/nOSS/n[        US	S	2S
4   U5        g	)zgCheck that missing indicator always exists when add_indicator=True.

Non-regression test for gh-26590.
r   r    r!   Tr#   )r!   r"   F)r!   r!   Nr.   )	r%   r:   r&   r'   r(   r)   rk   r   isnan)r   rp   X_trainX_testX_test_imputed_with_indicator X_test_imputed_without_indicatorexpected_missing_indicators          r   ?test_imputation_adds_missing_indicator_if_add_indicator_is_truerx      s    hhBFFaV,-G XX-.A78FT*KK$+$5$5f$=!(..&888U+KK'.'8'8'@$+11V;;;%a"f-/O 
xx"##&'V"&'V"1!R%8:TUr   )numpyr%   rS   sklearn.experimentalr   sklearn.imputer   r   r   sklearn.utils._testingr   r	   r
   sklearn.utils.fixesr   r   r   markfilterwarningsparametrizer,   r&   rB   rF   rY   rf   rn   rx   r   r   r   <module>r      s     9 F F 
 /F
 KLHJ4RS' T M' KLBFFB?3HJ4RS; T 4 M;: KLBFFB<0 &D   .9H : 1 MH: KLHJ4RS4-8/ 9 T M/4 HJ4RS4-8"2 9 T"2J .u>HJ4RSC T ?C HJ4RS-{;V < TVr   