
    ri                        d dl Zd dlZd dlm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)clone)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/auto_recruiter/arenv/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>R r   )idsc                     dgdgg}dgt         j                  gg}t        |       } | j                  d       | j	                  |      j                  |       y )N         Tadd_indicator)npnanr   
set_paramsfit	transform)r   traintests      r   +test_imputation_missing_value_in_test_arrayr-      sS    
 S1#JEC"&&?DGnG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      }t        |      }|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#   	      )      ?        r8   r7   )r8   r7   r8   r7   )r8   r8   r7   r7   )r8   r8   r8   r7   T)missing_valuesr%   )r   r!   r"   r#   Fr$   )	r&   arrayr   r(   fit_transformr	   r   
indicator_	features_)r.   r   XX_true_indicatorX_transX_trans_no_indicators         r   test_imputers_add_indicatorrC   %   s    	Q61%61%661%1fa 		
	A xx    		
 GnG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   I   s    0D0D r   csr_containerc           
         t        |       }  ||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 r2   )	r   r(   r<   r
   r   r=   r>   r&   r;   )r   r.   rE   r?   r@   rA   rB   s          r   "test_imputers_add_indicator_sparserG   F   s    GnG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   k   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%   r9   r!   r3   r"   r4   r#   r5   r6   Int16)abcde)dtypecolumns)	pytestimportorskipr&   r'   r(   r;   r<   	DataFramer	   )r   r%   pdr.   r?   X_trans_expectedX_dfrA   s           r   -test_imputers_pandas_na_integer_array_supportrZ   j   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.rJ   rK   r!   r3   r#   r"   r6   r4      r5      )rM   rN   rO   rP   rQ   f)rS   )	rM   rN   rO   rP   r_   missingindicator_amissingindicator_bmissingindicator_dmissingindicator_e)rM   rN   rO   rP   r_   N)
rT   rU   r&   r'   r(   r;   rV   r)   get_feature_names_outr   )r   r%   rW   r.   r?   rY   namesexpected_namess           r   &test_imputers_feature_names_out_pandasrg      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      }t        |       } | 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%   rh   )r<   r*   r   N)r&   r;   r'   r   r(   getattrshape)r   rh   r?   method	X_imputeds        r   test_keep_empty_featuresro      s     	2661+{RVVQK89AGnG  1D ! G 1 C,GGV,Q/	??agg---??qwwqz1771:>&BBBBCr   c                 .    | j                   j                  S r   r   r   s    r   r   r      r   r   missing_value_testr!   c                 B   t        j                  dt         j                  gddgg      }t        j                  d|gddgg      }t        |       } | 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)   r*   rl   r	   isnan)r   rq   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_truery      s"    hhBFFaV,-G XX-.A78FGnG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&   rT   sklearn.baser   sklearn.experimentalr   sklearn.imputer   r   r   sklearn.utils._testingr	   r
   r   sklearn.utils.fixesr   r   r   markfilterwarningsparametrizer-   r'   rC   rG   rZ   rg   ro   ry   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   