
    >[g                        d dl Zd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZ d dlmZ d Zd Zej"                  j%                  d      ej"                  j'                  d	 e       d
       d               Zej"                  j%                  d      ej"                  j'                  dej*                  dd g      ej"                  j'                  d	 e       d       d                      Zej"                  j%                  d      ej"                  j'                  dej*                  dg      ej"                  j'                  d	 e       d       ej"                  j'                  de      d                             Zej"                  j%                  d      ej"                  j'                  d	 e       d       ej"                  j'                  dddg      d                      Zej"                  j'                  d	 e       d       ej"                  j'                  dddg      d               Zej"                  j'                  dddg      ej"                  j'                  d	 e       d       d               Zej"                  j'                  d	 e       d       ej"                  j'                  dej*                  d g      d!               Zy)"    N)enable_iterative_imputerIterativeImputer
KNNImputerSimpleImputer)assert_allcloseassert_allclose_dense_sparseassert_array_equal)CSR_CONTAINERSc                  @    t        d      t               t               gS )Ng?)tolr        [/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/impute/tests/test_common.pyimputersr      s    %z|]_EEr   c                      t               gS N)r   r   r   r   sparse_imputersr      s    Or   z-ignore::sklearn.exceptions.ConvergenceWarningimputerc                 .    | j                   j                  S r   	__class____name__xs    r   <lambda>r          akk>R>Rr   )idsc                     dgdgg}dgt         j                  gg}| j                  d       | j                  |      j	                  |       y )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                 .    | j                   j                  S r   r   r   s    r   r   r   %   r   r   c           
         t        j                  | dd| dgd| d| dgdd| | dgddd| dgg      }t        j                  g dg d	g d
g dg      }|j                  | d       |j                  |      }t	        |d d dd f   |       t        |j                  j                  t        j                  g d             |j                  d       |j                  |      }t	        |d d d df   |       y 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%661%1fa 		
	A xx    		
 fDA##A&GGArsFO%56w))33RXXl5KLU+"003GAssFO%9:r   c                 .    | j                   j                  S r   r   r   s    r   r   r   F   s    0D0Dr   csr_containerc           
          ||dd|dgd|d|dgdd||dgddd|dgg      } |g dg d	g d
g dg      }| j                  |d       | j                  |      }t        |d d dd f   |       t        | j                  j
                  t        j                  g d             | j                  d       | j                  |      }t        |d d d df   |       y 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%661%1fa 		
	A %    		
 fDA##A&G BC2BCw))33RXXl5KLU+"003 CRC2FGr   c                 .    | j                   j                  S r   r   r   s    r   r   r   g   r   r   r$   TFc           
      V   t        j                  d      }t        j                  }| j	                  ||      } t        j
                  |dd|dgd|d|dgdd||dgddd|d	gg      }| j                  |      }|j                  |d
g d      }| j                  |      }t        ||       y )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  }V TG
Q61%61%661%1fa 		
	A ,,Q/ <<2K<LD ##D)G$g.r   c                 .    | j                   j                  S r   r   r   s    r   r   r      r   r   c                    t        j                  d      }t        j                  }| j	                  ||      } t        j
                  |ddd|dgd|dd|dgddd	||dgddd
d|dgg      }|j                  |g d      }| j                  |       | j                         }|rg d}t        ||       yg d}t        ||       y)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  }V TG
Q1fa(1fa(1ffa(1a#		
	A <<#A<BDKK))+E

 	>512>51r   keep_empty_featuresc                 .    | j                   j                  S r   r   r   s    r   r   r      r   r   c                    t        j                  t         j                  dgt         j                  dgt         j                  dgg      }| j                  d|      } dD ]b  } t	        | |      |      }|r|j
                  |j
                  k(  r1J |j
                  |j
                  d   |j
                  d   dz
  fk(  rbJ  y)	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,GGV,Q/	??agg---??qwwqz1771:>&BBBB 1r   c                 .    | j                   j                  S r   r   r   s    r   r   r      r   r   missing_value_testr    c                 ,   t        j                  dt         j                  gddgg      }t        j                  d|gddgg      }| j                  d       | j	                  |       | j                  |      }|j                  dk(  sJ | j                  d       | j	                  |       | j                  |      }|j                  dk(  sJ t        |d	d	d	d
f   |       t        j                  |      rddg}nddg}t        |d	d	d
f   |       y	)zoCheck 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   