
    {Kg~U                        d dl Z d dlmZ d dlmZ d dlZ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 d dlmZmZmZ d dlmZ d d	lmZmZmZmZmZ d d
lmZmZ  ej@                  d      jC                  d      Z"d Z#ejH                  jK                  dddd ejL                  d      dfg ddfg ddfdd e'dd      df e'd d      df ejP                  g dejR                        df ejP                  g dejT                        df ejP                  g dejV                        dfddgdfd ejP                  ddg      dfdg ddfd  e'd!d"      df ejP                  g d      df ejP                  g de,      dfg      d#        Z-d$ Z.d% Z/eejH                  jK                  d& e             d'               Z0ejH                  jK                  d(g d)      ejH                  jK                  d*g d+      d,               Z1ejH                  jK                  d(g d-      ejH                  jK                  d*g d+      d.               Z2ejH                  jK                  d(g d/      ejH                  jK                  d*g d+      ejH                  jK                  d0d1dgd2d3gg      d4                      Z3ejH                  jK                  d5ddg      ejH                  jK                  d6ddg      ejH                  jK                  d(g d/      ejH                  jK                  d*d7d8g      ejH                  jK                  d9d g d:g d;gfd1dd<gd=d>gd?dggfg      d@                                    Z4ejH                  jK                  d(g d-      ejH                  jK                  d*g dA      dB               Z5ejH                  jK                  d(g d/      ejH                  jK                  d*g dA      ejH                  jK                  dCd g d:g d;gfd1dd<gd=d>gd?dggfg      dD                      Z6ejH                  jK                  dEg dF      dG        Z7ejH                  jK                  d(g d-      dH        Z8ejH                  jK                  dEg dI      ejH                  jK                  d0dd3g      dJ               Z9ejH                  jK                  d(g dK      dL        Z:dM Z;ejH                  jK                  dNdd<g      dO        Z<ejH                  jK                  dPg dQ      dR        Z=dS Z>dT Z?ejH                  jK                  d0d d d1g e'd d       ejP                  d d1g      g      dU        Z@ejH                  jK                  d(g dV      dW        ZAejH                  jK                  dXdYdZ e,       d[fg      d\        ZBejH                  jK                  d]d^gd_gd^d_gd^d`gd_d`gg      da        ZCdb ZDdc ZEdd ZFde ZGdf ZHejH                  jK                  dge      dh        ZIdi ZJejH                  jK                  dje      dk        ZKy)l    N)copy)SkipTest)parse)_safe_indexingresampleshuffle))yield_namespace_device_dtype_combinations)_determine_key_type_get_column_indices_safe_assign)MockDataFrame)_array_api_for_tests_convert_containerassert_allclose_dense_sparseassert_array_equal'skip_if_array_api_compat_not_configured)CSC_CONTAINERSCSR_CONTAINERS	   )   r   c                     t        j                  dd      } | j                  g dg dg ddd	      }d
dlm} dgddgg ddgdgg}|D ]  }t        ||d      } |||   |        g dddgfg ddgfg}|D ]#  \  }}t        ||d      } ||dd|f   |       % d
dgddgfdgdgfg}	|	D ]#  \  }
}t        ||
d      } ||dd|f   |       % d
dgddgddgg}|D ]  }t        ||d
      } |||   |        y)z,Check _safe_indexing for polars as expected.polarsz0.18.2
minversion)      r      )r            )r   r   r   
   abcrow)orientr   )assert_frame_equalr$   r#   )r$   r#   r%   r%   r   axisTFT)FFTNr   r   )pytestimportorskip	DataFramepolars.testingr(   r   )pldfr(   str_keyskeyout	bool_keysbool_keystr_keyint_keysint_keyaxis_0_keyss               e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/utils/tests/test_indexing.pytest_polars_indexingr<      sT   			X(	;B	MB5 
 
B 2Sz?SEC5AHR1-2c7C(  &Sz25IC54QRI&'R22aj>3/ ' Q#s$sSEl3H$Rq12aj>3/ % q6Aq6Aq6*KR1-2c7C(     z
key, dtype)r   int)0str)TboolTrA   r   r   r   r>   r?   12r@   )rB   r>   )rC   r@   r   dtypeF))TFrA   )col_0r@   rH   col_1col_2)rI   r@   beginendc                 $    t        |       |k(  sJ y N)r
   )r3   rG   s     r;   test_determine_key_typerP   @   s    8 s#u,,,r=   c                  z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)NNo valid specification of thematch      ?)r,   raises
ValueErrorr
    r=   r;   test_determine_key_type_errorrY   _   s&    	z)H	IC  
J	I	Is   1:c                      t        j                  t        d      5  t        t	        ddd      d       d d d        y # 1 sw Y   y xY w)NzOnly array-like or scalar arerS   r   r   r   F)accept_slice)r,   rV   	TypeErrorr
   slicerX   r=   r;   #test_determine_key_type_slice_errorr^   d   s0    	y(G	HE!QN? 
I	H	Hs	   >Az#array_namespace, device, dtype_namec                    t        | |      }t        j                  d      5  |j                  g d      }t	        |      dk(  sJ |j                  g d      }t	        |      dk(  sJ 	 |j                  g d      }|/t        j                  t        d	      5  t	        |       d d d        d d d        y # t
        $ r d }Y Gw xY w# 1 sw Y   #xY w# 1 sw Y   y xY w)
NT)array_api_dispatchr   r   r   r>   r+   rA   )y      ?      ?y       @       @y      @      @rR   rS   )	r   sklearnconfig_contextasarrayr
   r\   r,   rV   rW   )array_namespacedevice
dtype_namexpint_array_keybool_array_keycomplex_array_keys          r;   !test_determine_key_type_array_apirl   i   s    
 
ov	6B			4	8

9-"=1U:::$78">2f<<<	% "

+C D
 (z1PQ#$56 R 
9	8  	% $	%
 RQ 
9	8sH   AC+B8>CC	'C8CCCC	C	CC
array_type)listarraysparse	dataframer   indices_type)rn   tuplero   seriesr]   c                     ddg}|dk(  r t        |d   t              r|dxx   dz  cc<   t        g dg dg dg|       }t        ||      }t        ||d      }t	        |t        g dg dg|              y )	Nr   r   r]   ra   r   r   r      r    r   r   r)   
isinstancer>   r   r   r   rm   rr   indicesro   subsets        r;   &test_safe_indexing_2d_container_axis_0r~      sv    
 !fGw:gaj##>
a
	9i@*ME ,7GE73F "Iy#9:Fr=   )rn   ro   rt   polars_seriesc                     ddg}|dk(  r t        |d   t              r|dxx   dz  cc<   t        g d|       }t        ||      }t        ||d      }t	        |t        ddg|              y )Nr   r   r]   	r   r   r   r   r   r   rx   r    r   r   r)   r   ry   r{   s        r;   test_safe_indexing_1d_containerr      sl     !fGw:gaj##>
a
:JGE ,7GE73F );QFJ)OPr=   )ro   rp   rq   r   r|   r   rJ   rK   c           	         t        |      }|dk(  r t        |d   t              r|dxx   dz  cc<   g d}t        g dg dg dg| |      }t        ||      }t        |d   t              r9| dvr5d	}t        j                  t        |
      5  t        ||d       d d d        y t        ||d      }t        |t        ddgddgddgg|              y # 1 sw Y   y xY w)Nr]   r   rI   ra   rv   rw   r   rq   r   ESpecifying the columns using strings is only supported for dataframesrS   r)   r   r   r   r   r    r   )
r   rz   r>   r   r@   r,   rV   rW   r   r   )rm   rr   r|   indices_convertedcolumns_namero   err_msgr}   s           r;   &test_safe_indexing_2d_container_axis_1r      s     Ww:gaj##>!!.L	Iy):|E ++<lK'!*c"z9P'PS 	 ]]:W55"3!< 65  '8qA$&AAA'?L	
	 65s   CCarray_read_onlyindices_read_onlyro   rt   zaxis, expected_arrayrv   rw   r   r   r   r    c                 6   t        j                  g dg dg dg      }| r|j                  d       t        ||      }t        j                  ddg      }|r|j                  d       t        ||      }t	        |||      }t        |t        ||             y )	Nra   rv   rw   F)writer   r   r)   )npro   setflagsr   r   r   )	r   r   rm   rr   r*   expected_arrayro   r|   r}   s	            r;   &test_safe_indexing_2d_read_only_axis_1r      s     HHiI67EU#uj1Ehh1vGu% ,7GE76F );NJ)WXr=   )rn   rs   ro   rt   c                     dgdgdz  z   dgdz  z   }t        g d|       }t        ||      }t        ||d      }t        |t        ddg|              y )	NFTr   r   r   r   r)   r   r   r   r   r{   s        r;   $test_safe_indexing_1d_container_maskr      s^     g
"eWq[0G:JGE ,7GE73F );QFJ)OPr=   zaxis, expected_subsetc                     g d}t        g dg dg dg| |      }g d}t        ||      }t        |||      }t        |t        ||              y )NrI   ra   rv   rw   )FTTr)   r   )rm   rr   r*   expected_subsetr   ro   r|   r}   s           r;   test_safe_indexing_2d_maskr      sW     /L	Iy):|E "G ,7GE76F "?J?r=   z array_type, expected_output_type))rn   rn   ro   ro   rp   rp   rq   rt   r   r   c                     t        g dg dg dg|       }d}t        ||d      }t        g d|      }t        ||       y )Nra   rv   rw   r   r   r)   r   )rm   expected_output_typero   r|   r}   r   s         r;   #test_safe_indexing_2d_scalar_axis_0r      sA     	9i@*MEGE73F'	3GHN 8r=   c                 N    t        g d|       }d}t        ||d      }|dk(  sJ y )Nr   r   r   r)   r   )r   r   )rm   ro   r|   r}   s       r;   test_safe_indexing_1d_scalarr     s.    :JGEGE73FQ;;r=   )r   r   r   r   c                 P   g d}t        g dg dg dg| |      }t        |t              r9| dvr5d}t        j                  t
        |      5  t        ||d	       d d d        y t        ||d	      }g d
}|dk(  rdgdgdgg}t        ||      }t        ||       y # 1 sw Y   y xY w)NrI   ra   rv   rw   r   r   rS   r   r)   )r   r   r   rp   r   r   r   )r   rz   r@   r,   rV   rW   r   r   )	rm   r   r|   r   ro   r   r}   expected_outputr   s	            r;   #test_safe_indexing_2d_scalar_axis_1r   	  s     /L	Iy):|E '3J6M$MS 	 ]]:W55'2 65  wQ7#8+ !sQC!oO+O=QR$V^< 65s   BB%)rn   ro   rp   c                 b    t        g dg dg dg|       }t        |d d      }t        ||       y )Nra   rv   rw   r   r)   r   )rm   XX_subsets      r;   test_safe_indexing_None_axis_0r   )  s-    Iy)<jIAaA.H 1-r=   c                      t        j                  d      } d}| j                  t              }t        j                  t
        |      5  t        |dgd       d d d        y # 1 sw Y   y xY w)Npandasz&No valid specification of the columns.rS   rU   r   r)   )r,   r-   r.   X_toyrV   rW   r   )pdr   r   s      r;   0test_safe_indexing_pandas_no_matching_cols_errorr   0  sM    			X	&B6G
UA	z	1q3%a( 
2	1	1s   A!!A*r*   c                     t        j                  t        d      5  t        t        ddg|        d d d        y # 1 sw Y   y xY w)Nz'axis' should be either 0rS   r   r   r)   )r,   rV   rW   r   r   r)   s    r;   test_safe_indexing_error_axisr   8  s.    	z)D	Euq!f40 
F	E	Es	   :AX_constructor)ro   rt   r   c                    t        t        d            }| dk(  rt        j                  |      } nX| dk(  r't	        j
                  d      }|j                  |      } n,| dk(  r't	        j
                  d      }|j                  |      } d}t	        j                  t        |	      5  t        | d
dgd       d d d        y # 1 sw Y   y xY w)Nr   ro   rt   r   r   r   )valuesz='X' should be a 2D NumPy array, 2D sparse matrix or dataframerS   r   r   r)   )
rn   ranger   rd   r,   r-   SeriesrV   rW   r   )r   r   r   r0   r   s        r;   !test_safe_indexing_1d_array_errorr   >  s     	U1XA

1	(	"  *		!	/	)  *			+MG	z	1}q!f15 
2	1	1s   %B??Cc                      ddg} g dg dg dg}d}t        j                  t        |      5  t        || d	       d d d        y # 1 sw Y   y xY w)
NrJ   rK   ra   rv   rw   z.String indexing is not supported with 'axis=0'rS   r   r)   r,   rV   rW   r   )r|   ro   r   s      r;   4test_safe_indexing_container_axis_0_unsupported_typer   Q  sC     G	9-E>G	z	1ugA. 
2	1	1s   AAc                  b   t        j                  d      } t        | j                        }t        |j                        }|t        d      k\  rt        d      | j                  g dg dd      }t        |ddgd	      }t        | j                  d
      r| j                  j                  }n | j                  j                  j                  }t        j                         5  t        j                  d|       d|j                   d<   d d d        |j                   d   dk(  sJ y # 1 sw Y   xY w)Nr   3z;SettingWithCopyWarning has been removed in pandas 3.0.0.devra   )r   r   r   )r#   r$   r   r   r)   SettingWithCopyWarningerrorr!   )r   r   )r,   r-   parse_version__version__base_versionr   r.   r   hasattrerrorsr   corecommonwarningscatch_warningssimplefilteriloc)r   
pd_versionpd_base_versionr   r}   r   s         r;   4test_safe_indexing_pandas_no_settingwithcopy_warningr   Y  s     
		X	&Br~~.J#J$;$;<O-,,TUU
9956AA1vA.Fryy23!#!A!A "$!F!F		 	 	"g'=>D 
# 66$<1	 
#	"s   "&D%%D.c                     ddgddgddgg}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 ValueError when axis=1 with input as list.r   r   r   r   rx   r    z!axis=1 is not supported for listsrS   r)   Nr   )r|   r   r   s      r;   *test_safe_indexing_list_axis_1_unsupportedr   r  sG     Q!Q!Q A1G	z	1q'* 
2	1	1s   AA
)ro   rp   rq   c                    t         j                  j                  d      }|j                  dd      }ddg}|j                  t	        |      |j
                  d         }t        ||       }t        |||       t        ||d      }t        |t        ||              ddg}|j                  |j
                  d   t	        |            }t        ||       }t        |||       t        ||d      }t        |t        ||              d	\  }} |j                  |j
                   }t        ||       }t        |||       t        |t        ||              y
)z,Check that `_safe_assign` works as expected.r   r!   r   r   r   )row_indexerr)   )column_indexer)NNN)
r   randomRandomStaterandnlenshaper   r   r   r   )rm   rngX_arrayr   r   r   assigned_portionr   s           r;   test_safe_assignr   {  s:    ))


"CiiAGa&KYYs;'q)9:F7J/AF4%a1= ,VZ@ VNYYw}}Q'^)<=F7J/AF>:%aa@ ,VZ@ #-KSYY F7J/AF>: $6vz$JKr=   zkey, err_msg)r!   z all features must be in \[0, 2\])whatever/A given column is not a column of the dataframez%No valid specification of the columnsc                     t        j                  d      }|j                  t        g d      }t        j                  t
        |      5  t        ||        d d d        y # 1 sw Y   y xY w)Nr   rI   columnsrS   )r,   r-   r.   r   rV   rW   r   )r3   r   r   X_dfs       r;   test_get_column_indices_errorr     sK     
		X	&B<<'B<CD	z	1D#& 
2	1	1s   
A  A)r3   col1col2col3c                 \   t        j                  d      }t        j                  dt              }g d}|j                  ||      }dj                  |       }t        j                  t              5 }t        ||        d d d        t        j                        |k(  sJ y # 1 sw Y   $xY w)Nr   )r   r   rF   )r   r   r   r   r   r   z1Selected columns, {}, are not unique in dataframe)r,   r-   r   zerosr>   r.   formatrV   rW   r   r@   value)r3   r   toyr   r   r   exc_infos          r;   6test_get_column_indices_pandas_nonunique_columns_errorr     s     
		X	&B
((6
%C6G
S'*AAHHMG	z	"hAs# 
#x~~'))) 
#	"s   2B""B+c            
         t        j                  dd      } | j                  g dg dgg d      } G d d	      } ||      }t        d
d      d
dgft        dd      dd
gft        d
d      d
gfddgd
dgft        dd      dd
gft        dd      g dft        dd      dgfddgddgfg g fg	}|D ]  \  }}t	        ||      |k(  rJ  d}t        j
                  t        |      5  t	        |dg       ddd       d}t        j
                  t        |      5  t	        |t        ddd             ddd       y# 1 sw Y   GxY w# 1 sw Y   yxY w)z=Check _get_column_indices for edge cases with the interchanger   z1.5r   ra   rv   r"   r   c                       e Zd Zd Zd Zy):test_get_column_indices_interchange.<locals>.MockDataFramec                     || _         y rO   )_df)selfr1   s     r;   __init__zCtest_get_column_indices_interchange.<locals>.MockDataFrame.__init__  s	    DHr=   c                 .    t        | j                  |      S rO   )getattrr   )r   names     r;   __getattr__zFtest_get_column_indices_interchange.<locals>.MockDataFrame.__getattr__  s    488T**r=   N)__name__
__module____qualname__r   r   rX   r=   r;   r   r     s    		+r=   r   r   Nr   r   r$   r%   r#   rB   r   rS   not_a_columnzkey.step must be 1 or None)r,   r-   r.   r]   r   rV   rW   NotImplementedError)r   r1   r   	df_mockedkey_resultsr3   resultmsgs           r;   #test_get_column_indices_interchanger     sf   			X%	8B	y),o	FB+ + b!I 
q$!Q 	tQ!Q 	q!qc
saV	sC1a&!	sD	9%	tS	A3
saV	R
K #V"9c2f<<< # <C	z	-I'78 
. 'C	*#	6IuS$':; 
7	6	 
.	- 
7	6s   (D<E<EEc                  R   t               J t        j                  t              5  t        dgddg       d d d        t        j                  t              5  t        ddgddgdd       d d d        t	        t        ddgd            dk(  sJ y # 1 sw Y   \xY w# 1 sw Y   3xY w)	Nr   r   Fr   )replace	n_samplesr   r   )r   )r   r,   rV   rW   r   rX   r=   r;   test_resampler    s    : 
z	"!q!f 
#	z	"!Q!Q!< 
# xA!,-222 
#	"	"	"s   BBBB&c                     t         j                  j                  d      } d}d}| j                  |df      }| j	                  d||      }t        ||ddd       \  }}t        j                  |dk(        sJ t        ||dd|      \  }}t        j                  |dk(        rJ t        j                  |      dk(  sJ y )	Nr   d   g?r   sizer!   r   random_statestratifyr   )r   r   r   normalbinomialr   allsum)r   r   pr   y_y_not_stratifiedy_stratifieds           r;   test_resample_stratifiedr    s    
))


"CIA

A
'AQ	*A"1a2APTUA66"a'(((q!rANOA|vvla'(((66,1$$$r=   c                      t         j                  j                  d      } d}| j                  |df      }| j	                  dd|      }t        ||dd| |      \  }}t        ||d	d| |      \  }}t        j                  |      j                  d   dk  sJ t        j                  |      j                  d   dk(  sJ t        ||dd
| |      \  }}|j                  d   d
k(  sJ t        j                  |      j                  d   dk(  sJ y )Nr   r  r   r  r   T2   )r   r   r  r  Fi  )r   r   r   r	  randintr   uniquer   )r   r   r   r  	X_replacer  X_no_replaces          r;    test_resample_stratified_replacer    s   
))


"CI

A
'AAqy)A	1dbsQLIq 	1eraOL! 99Y%%a(2---99\"((+r111 	1ddqLIq ??1%%%99Y%%a(C///r=   c                      t         j                  j                  d      } d}| j                  |df      }| j	                  dd|df      }t        ||d| |      \  }}|j                  dk(  sJ y )Nr   r  r   r  r   r  r  )r   r   r   r	  r  r   ndim)r   r   r   r  s       r;   test_resample_stratify_2dyr    sm    
))


"CI

A
'AAq	1~.AAqBS1EDAq66Q;;r=   csr_containerc                 L   t         j                  j                  d      }d}|j                  |df      }|j	                  dd|      } | |j                  dd            }t        j                  t        d      5  t        ||d	||
      \  }}d d d        y # 1 sw Y   y xY w)Nr   r  r   r  r   zSparse data was passedrS   r  r  )
r   r   r   r	  r  reshaper,   rV   r\   r   )r  r   r   r   r  r  s         r;   #test_resample_stratify_sparse_errorr!  %  s     ))


"CI

A
'AAqy)AQYYr1-.H	y(@	A1xP1 
B	A	As   =BB#c                      d } t        j                  ddgddggddgdd	ggg      }t         | |            }t        |       t         | |            |k(  sJ y )
Nc                 &    t        d | D              S )Nc              3   @   K   | ]  }t        d  |D                yw)c              3   2   K   | ]  }t        |        y wrO   rs   ).0Cs     r;   	<genexpr>zPtest_shuffle_on_ndim_equals_three.<locals>.to_tuple.<locals>.<genexpr>.<genexpr>3  s     /Q58Qs   Nr&  )r'  Bs     r;   r)  zFtest_shuffle_on_ndim_equals_three.<locals>.to_tuple.<locals>.<genexpr>3  s     ;AU/Q//s   r&  )As    r;   to_tuplez3test_shuffle_on_ndim_equals_three.<locals>.to_tuple2  s    ;;;;r=   r   r   r   r   r   r   rx   r    )r   ro   setr   )r,  r+  Ss      r;   !test_shuffle_on_ndim_equals_threer/  1  sb    < 	Aq6Aq6"aVaV$456AHQKAAJx{q   r=   csc_containerc           	         g d}t        j                  g dt              }g d}t        t        j                  ddgddgdd	ggt                    } | t        j                  d
      j                  dd	            }t        |||||d      \  }}}}	}
|g dk(  sJ t        |      t        k(  sJ t        |g d       |j                  t        k(  sJ |g dk(  sJ t        |      t        k(  sJ t        |	t        j                  dd	gddgddggt                     t        |	      t        k(  sJ t        |
j                         t        j                  ddgd	dgddgg             y )Nr"   rF   ra   r#   r   r$   r   r%   r   r   r   )r  )r%   r$   r#   )r   r   r   r   r   )r   ro   objectr   aranger   r   typern   r   rG   toarray)r0  r#   r$   r%   dea_sb_sc_sd_se_ss              r;   "test_shuffle_dont_convert_to_arrayr=  ;  sF    	A
/AAbhha3(S!H=VLMAbiil**1a01A%aAq!!DCc3/!!!9sO,99)9sBHHsAha3(%C6RS9%%%s{{}bhhAAA/G&HIr=   )Lr   r   unittestr   numpyr   r,   rb   $sklearn.externals._packaging.versionr   r   sklearn.utilsr   r   r   sklearn.utils._array_apir	   sklearn.utils._indexingr
   r   r   sklearn.utils._mockingr   sklearn.utils._testingr   r   r   r   r   sklearn.utils.fixesr   r   r3  r   r   r<   markparametrizebool_r]   ro   int32int64uint8r2  rP   rY   r^   rl   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r/  r=  rX   r=   r;   <module>rM     s         G ; ; N 
 1  ? 			!V$)B 	$ 	E	%  	tT	D!	q!e	)288	,e4	)288	,e4	)288	,e4
	4-	 &)	$e,,	w	&	-	.6	-V	<eD-6-76-!
@
 ))+T+V7 )7* D )VW	 X	 'ST)VWQ X UQ 'QR)VWaVgw-?$@A
 B X S
4 *T5M:,tUm<'QR'8)<=a)Y!7811v1vPQSTv>V:WXY > S = ;Y 'ST)MNQ O UQ 'QR)MN)Y	 11v1v1v&>"?@	 O S &	9	9 'ST U & QL1= 2=, 'BC. D.) $+1 ,1
 *NO6 P6$/2 QAaXRXXq!f=M$NO+ P+ 'GHL ILB 1G	:;'' 	VHvh 0662BVVDTU	*	*%<P3% 02 .9Q :Q! .9J :Jr=   