
    {Kg                     2   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	m
Z
  G d dee      Zdd	gd
z  Zg dZ ej                  d      j                  dd      Z ej                  d dd      j                  dd
      Zej%                         Zd edddddf<   d dgZ ed      Zeddd   Z ej0                  e      Zdeddd<   d Zej6                  j9                  de
      d        Zd Zej6                  j9                  de
      d        Zd Z d Z!y)    N)assert_array_equal)BaseEstimator)SelectorMixin)CSC_CONTAINERSc                   &    e Zd ZdZddZddZd Zy)StepSelectorzhRetain every `step` features (beginning with 0).

    If `step < 1`, then no features are selected.
    c                     || _         y Nstep)selfr   s     m/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/feature_selection/tests/test_base.py__init__zStepSelector.__init__   s	    	    Nc                 ,    | j                  |d      }| S )Ncsc)accept_sparse)_validate_data)r   Xys      r   fitzStepSelector.fit   s    7r   c                     t        j                  | j                  t              }| j                  dk\  rd|d d | j                  <   |S )Ndtype   T)npzerosn_features_in_boolr   )r   masks     r   _get_support_maskzStepSelector._get_support_mask   s:    xx++4899>!%DDIIr   )   r
   )__name__
__module____qualname____doc__r   r   r!    r   r   r   r   
   s    
r   r   TF   )r   r"               r"   
   r   
ABCDEFGHIJ c                  F   t               } | j                  t        t              j	                  t              }t               j                  t        t              }t        t        |       t        t        |       t        j                  | j	                  t        j                  t        j                              j                  k(  sJ t        j                  | j	                  t        j                  t        j                              j                  k(  sJ | j	                  t        g      }t        t        |j                                t!        j"                  t$              5  | j	                  t        j&                  dgdgg             d d d        y # 1 sw Y   y xY wNr   r"   )r   r   r   r   	transformfit_transformr   Xtr   int32astyper   float32feature_namesfeature_names_travelpytestraises
ValueErrorarray)sel	Xt_actual
Xt_actual2names_t_actuals       r   test_transform_denserC   +   s   
.C1''*I--a3Jr9%r:& 88s}}QXXbhh%78>>>>>::qxx

';<BBBBB ]]M?3N(<(<(>? 
z	"bhhaSz*+ 
#	"	"s   %)FF csc_containerc                     | t               }t               }|j                  |      j                  |      }|j	                  |      }t        t        |j                                t        t        |j                                t        j                  |j                  |j                  t        j                              j                  k(  sJ t        j                  |j                  |j                  t        j                              j                  k(  sJ t        j                  t              5  |j                  t        j                   dgdgg             d d d        y # 1 sw Y   y xY wr1   )r   r   r   r2   r3   r   r4   toarrayr   r5   r6   r   r7   r;   r<   r=   r>   )rD   X_spr?   r@   rA   s        r   test_transform_sparserH   ?   s    D
.C''-I""4(Jr9,,./r:--/0 88s}}T[[%:;AAAAA::t{{2::'>?EEEEE 
z	"bhhaSz*+ 
#	"	"   3)E%%E.c                     t               } | j                  t        t              j	                  t
              }t        t        |       t        j                  | j	                  t
        j                  t        j                              j                  k(  sJ t        j                  | j	                  t
        j                  t        j                              j                  k(  sJ | j	                  t        g      }t        t        |j                                t!        j"                  t$              5  | j	                  t        j&                  dgdgg             d d d        y # 1 sw Y   y xY wr1   )r   r   r   r   inverse_transformr4   r   Xinvr   r5   r6   r   r7   r9   feature_names_invr:   r;   r<   r=   r>   )r?   Xinv_actualnames_inv_actuals      r   test_inverse_transform_denserP   Q   s    
.C''!Q-11"5Kt[) 88s,,RYYrxx-@AGGGGG::..ryy/DEKKKKK ,,o->?(*:*@*@*BC 
z	"bhhaSz23 
#	"	"rI   c                     | t               } | t              }t               }|j                  |      j	                  |      }t        t        |j                                t        j                  |j	                  |j                  t        j                              j                  k(  sJ t        j                  |j	                  |j                  t        j                              j                  k(  sJ t        j                  t              5  |j	                  t        j                   dgdgg             d d d        y # 1 sw Y   y xY wr1   )r   r4   r   r   rK   r   rL   rF   r   r5   r6   r   r7   r;   r<   r=   r>   )rD   rG   Xt_spr?   rN   s        r   test_inverse_transform_sparserS   c   s    D"E
.C''$-11%8Kt[0023 88s,,U\\"((-CDJJJJJ::..u||BJJ/GHNNNNN 
z	"bhhaSz23 
#	"	"s   )EEc                      t               } | j                  t        t               t	        t
        | j                                t	        t        | j                  d             y )NT)indices)r   r   r   r   r   supportget_supportsupport_inds)r?   s    r   test_get_supportrY   t   s<    
.CGGAqMw 12|S__T_%BCr   c            	         t        j                  d      } | j                  | j                  g dt        j
                        | j                  g dd      | j                  g dd      | j                  g dt        j                        d      }d	D ]v  }t        |
      j                  d      }|j                  |       |j                  |      }|j                  j                         D ]  \  }}||j                  |   k(  rJ  x t        d
      j                  d      }|j                  |t               d}t        j                  t        |      5  |j                  |      }	ddd       t!        	j"                  |j"                         |	j$                  |j$                  d   dfk(  sJ y# 1 sw Y   JxY w)zGCheck output dtypes for dataframes is consistent with the input dtypes.pandas)g      ?333333@g      @r   )abr]   category)jr^   r^   )g      @r\   g333333?)r]   r^   cd)r"      r   )r2   r   zNo features were selected)matchN)r;   importorskip	DataFrameSeriesr   r7   float64r   
set_outputr   r2   dtypesitemsr   warnsUserWarningr   indexshape)
pdr   r   r?   outputnamer   sel0msgoutput0s
             r   test_output_dataframerv   {   sc   			X	&B
?"**=?*=?*=?"**=		
	A %0080D
q!!==..0KD%AHHTN*** 1  Q**X*>DHHQN
%C	k	-..# 
. w}}agg.==QWWQZO+++	 
.	-s   F99G)"numpyr   r;   numpy.testingr   sklearn.baser   sklearn.feature_selection._baser   sklearn.utils.fixesr   r   rV   rX   arangereshaper   r4   copyrL   r   listr8   r9   r>   rM   rC   markparametrizerH   rP   rS   rY   rv   r'   r   r   <module>r      s7     , & 9 .=- ( -!
BIIbM!R RYYq"a  A&vvxQ1WF\"!$BHH]+  !$Q$ ,( .9, :,"4$ .94 :4 D,r   