o
    \i\                     @   s  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m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 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#d$dZ%dd Z&ej'(dddde)ddfg ddfg ddfdde*dddfe*d ddfej+g dej,ddfej+g dej-ddfej+g dej.ddfddgdfde+ddgdfd g d!dfd"e*d#d$dfe+g d!dfej+g d!e/ddfgd%d& Z0d'd( Z1d)d* Z2eej'j(d+e ed,d-d. Z3ej'(d/g d0ej'(d1g d2d3d4 Z4ej'(d/g d5ej'(d1g d2d6d7 Z5ej'(d/g d8ej'(d1g d2ej'(d9d:dgd;d<ggd=d> Z6ej'(d?ddgej'(d@ddgej'(d/g d8ej'(d1dAdBgej'(dCd g dDg dEgfd:ddFgdGdHgdIdggfgdJdK Z7ej'(d/g d5ej'(d1g dLdMdN Z8ej'(d/g d8ej'(d1g dLej'(dOd g dDg dEgfd:ddFgdGdHgdIdggfgdPdQ Z9ej'(dRg dSdTdU Z:ej'(d/g d5dVdW Z;ej'(dRg dXej'(d9dd<gdYdZ Z<ej'(d/g d[d\d] Z=d^d_ Z>ej'(d`ddFgdadb Z?ej'(dcg dddedf Z@dgdh ZAdidj ZBej'(d9d d d:ge*d de+d d:ggdkdl ZCej'(d/g dmdndo ZDej'(dpdqdre/ dsfgdtdu ZEej'(dvdwgdxgdwdxgdwdygdxdyggdzd{ ZFd|d} ZGd~d ZHdd ZIdd ZJdd ZKdd ZLdd ZMej'(de"dd ZNdd ZOej'(de!dd ZPdS )    N)copy)SkipTest)kstest)parse)_safe_indexingresampleshuffle)_get_namespace_device_dtype_ids)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                  C   s\  t jddd} | jg dg dg dddd	}d
dlm} dgddgg ddgdgg}|D ]}t||dd}||| | q.g dddgfg ddgfg}|D ]\}}t||dd}||dd|f | qPd
dgddgfdgdgfg}	|	D ]\}
}t||
dd}||dd|f | qwd
dgddgddgg}|D ]}t||d
d}||| | qdS )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_keys r:   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_indexing.pytest_polars_indexing#   s,   r<   z
key, dtype)r   int)0str)TboolTr@   r   r   r   r=   r>   12r?   )rA   r=   )rB   r?   r   dtypeF))TFr@   )col_0r?   rG   col_1col_2)rH   r?   beginendc                 C   s   t | |ksJ d S N)r   )r2   rF   r:   r:   r;   test_determine_key_typeD   s   rN   c                   C   s<   t jtdd td W d    d S 1 sw   Y  d S )NNo valid specification of thematch      ?)r+   raises
ValueErrorr   r:   r:   r:   r;   test_determine_key_type_errorc   s   
"rU   c                   C   sH   t jtdd ttddddd W d    d S 1 sw   Y  d S )NzOnly array-like or scalar arerP   r   r   r   F)accept_slice)r+   rS   	TypeErrorr   slicer:   r:   r:   r;   #test_determine_key_type_slice_errorh   s   "rY   z#array_namespace, device, dtype_name)idsc              	   C   s   t | |}tjddk |g d}t|dksJ |g d}t|dks*J z	|g d}W n ty>   d }Y nw |d urftjtdd	 t| W d    n1 sYw   Y  W d    d S W d    d S W d    d S 1 syw   Y  d S )
NT)array_api_dispatchr   r   r   r=   r*   r@   )y      ?      ?y       @       @y      @      @rO   rP   )	r   sklearnconfig_contextasarrayr   rW   r+   rS   rT   )array_namespacedevice
dtype_namexpint_array_keybool_array_keycomplex_array_keyr:   r:   r;   !test_determine_key_type_array_apim   s(   

"rg   
array_type)listarraysparse	dataframer   pyarrowindices_type)ri   tuplerj   seriesrX   c                 C   s   ddg}|dkrt |d tr|d  d7  < tg dg dg dg| }t||}t||dd}t|tg dg dg|  d S )	Nr   r   rX   r\   r   r   r      r   r   r   r(   
isinstancer=   r   r   r   rh   rn   indicesrj   subsetr:   r:   r;   &test_safe_indexing_2d_container_axis_0   s   
ry   )ri   rj   rp   polars_seriespyarrow_arrayc                 C   sl   ddg}|dkrt |d tr|d  d7  < tg d| }t||}t||dd}t|tddg|  d S )Nr   r   rX   	r   r   r   r   r   r   rs   r   r   r   r(   r   rt   rv   r:   r:   r;   test_safe_indexing_1d_container   s   
r}   )rj   rk   rl   r   rm   rw   r   rI   rJ   c                 C   s   t |}|dkrt|d tr|d  d7  < g d}tg dg dg dg| |}t||}t|d tr]| dv r]d	}tjt|d
 t||dd W d    d S 1 sVw   Y  d S t||dd}t	|tddgddgddgg|  d S )NrX   r   rH   r\   rq   rr   r   rj   rk   ESpecifying the columns using strings is only supported for dataframesrP   r(   r   r   r   r   r   r   )
r   ru   r=   r   r?   r+   rS   rT   r   r   )rh   rn   rw   indices_convertedcolumns_namerj   err_msgrx   r:   r:   r;   &test_safe_indexing_2d_container_axis_1   s$   
"r   array_read_onlyindices_read_onlyrj   rp   zaxis, expected_arrayrq   rr   r   r   r   r   c           	      C   s   t g dg dg dg}| r|jdd t||}t ddg}|r*|jdd t||}t|||d}t|t|| d S )	Nr\   rq   rr   F)writer   r   r(   )nprj   setflagsr   r   r   )	r   r   rh   rn   r)   expected_arrayrj   rw   rx   r:   r:   r;   &test_safe_indexing_2d_read_only_axis_1   s   

r   )ri   ro   rj   rp   c                 C   sX   dgdgd  dgd  }t g d| }t ||}t||dd}t|t ddg|  d S )	NFTr   r   r|   r   r(   r   r   r   r   rv   r:   r:   r;   $test_safe_indexing_1d_container_mask   s
   
r   zaxis, expected_subsetc                 C   sZ   g d}t g dg dg dg| |}g d}t ||}t|||d}t|t ||  d S )NrH   r\   rq   rr   )FTTr(   r   )rh   rn   r)   expected_subsetr   rj   rw   rx   r:   r:   r;   test_safe_indexing_2d_mask   s   	

r   z array_type, expected_output_type))ri   ri   rj   rj   rk   rk   rl   rp   r   rz   rm   r{   c                 C   sJ   t g dg dg dg| }d}t||dd}t g d|}t|| d S )Nr\   rq   rr   r   r   r(   r   )rh   expected_output_typerj   rw   rx   r   r:   r:   r;   #test_safe_indexing_2d_scalar_axis_0   s
   r   c                 C   s0   t g d| }d}t||dd}|dksJ d S )Nr|   r   r   r(   r   )r   r   )rh   rj   rw   rx   r:   r:   r;   test_safe_indexing_1d_scalar  s   r   )r   r   r   r   r   c           	      C   s   g d}t g dg dg dg| |}t|tr?| dv r?d}tjt|d t||dd	 W d    d S 1 s8w   Y  d S t||dd	}g d
}|dkrVdgdgdgg}t ||}t|| d S )NrH   r\   rq   rr   r~   r   rP   r   r(   )r   r   r   rk   r   r   r   )r   ru   r?   r+   rS   rT   r   r   )	rh   r   rw   r   rj   r   rx   expected_outputr   r:   r:   r;   #test_safe_indexing_2d_scalar_axis_1  s    "
r   )ri   rj   rk   c                 C   s8   t g dg dg dg| }t|d dd}t|| d S )Nr\   rq   rr   r   r(   r   )rh   XX_subsetr:   r:   r;   test_safe_indexing_None_axis_0=  s   r   c                  C   s\   t d} d}| t}t jt|d t|dgdd W d    d S 1 s'w   Y  d S )Npandasz&No valid specification of the columns.rP   rR   r   r(   )r+   r,   r-   X_toyrS   rT   r   )pdr   r   r:   r:   r;   0test_safe_indexing_pandas_no_matching_cols_errorD  s   

"r   r)   c                 C   sF   t jtdd ttddg| d W d    d S 1 sw   Y  d S )Nz'axis' should be either 0rP   r   r   r(   )r+   rS   rT   r   r   r(   r:   r:   r;   test_safe_indexing_error_axisL  s   "r   X_constructor)rj   rp   rz   r{   c                 C   s   t td}| dkrt|} n-| dkrtd}||} n| dkr/td}|j|d} n| dkr=td	}||} d
}tjt	|d t
| ddgdd W d    d S 1 s[w   Y  d S )Nr   rj   rp   r   rz   r   )valuesr{   rm   z='X' should be a 2D NumPy array, 2D sparse matrix or dataframerP   r   r   r(   )ri   ranger   r_   r+   r,   Seriesrj   rS   rT   r   )r   r   r   r/   par   r:   r:   r;   !test_safe_indexing_1d_array_errorR  s    



"r   c                  C   sd   ddg} g dg dg dg}d}t jt|d t|| dd	 W d    d S 1 s+w   Y  d S )
NrI   rJ   r\   rq   rr   z.String indexing is not supported with 'axis=0'rP   r   r(   r+   rS   rT   r   )rw   rj   r   r:   r:   r;   4test_safe_indexing_container_axis_0_unsupported_typej  s   "r   c                  C   s   t d} t| j}t|j}|tdkrtd| g dg dd}t|ddgdd	}t| j	d
r9| j	j
}n| jjj
}t  td| d|jd< W d    n1 sXw   Y  |jd dksfJ d S )Nr   3z;SettingWithCopyWarning has been removed in pandas 3.0.0.devr\   )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   rx   r   r:   r:   r;   4test_safe_indexing_pandas_no_settingwithcopy_warningr  s   





r   c                 C   s\   ddgddgddgg}d}t jt|d t|| dd	 W d
   d
S 1 s'w   Y  d
S )z@Check that we raise a ValueError when axis=1 with input as list.r   r   r   r   rs   r   z!axis=1 is not supported for listsrP   r(   Nr   )rw   r   r   r:   r:   r;   *test_safe_indexing_list_axis_1_unsupported  s
   "r   )rj   rk   rl   c                 C   s   t jd}|dd}ddg}|t||jd }t|| }t|||d t||dd}t	|t||  ddg}||jd t|}t|| }t|||d t||dd}t	|t||  d	\}}|j|j }t|| }t|||d t	|t||  d
S )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   )rh   rngX_arrayr   r   r   assigned_portionr   r:   r:   r;   test_safe_assign  s.   




r   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                 C   sZ   t d}|jtg dd}t jt|d t||  W d    d S 1 s&w   Y  d S )Nr   rH   columnsrP   )r+   r,   r-   r   rS   rT   r   )r2   r   r   X_dfr:   r:   r;   test_get_column_indices_error  s
   
	"r   r2   col1col2col3c                 C   s   t d}tjdtd}g d}|j||d}d| }t t}t	||  W d    n1 s1w   Y  t
|j|ks?J d S )Nr   )r   r   rE   )r   r   r   r   r   r   z1Selected columns, {}, are not unique in dataframe)r+   r,   r   zerosr=   r-   formatrS   rT   r   r?   value)r2   r   toyr   r   r   exc_infor:   r:   r;   6test_get_column_indices_pandas_nonunique_columns_error  s   

r   c               
   C   sR  t d} | jg dg dg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sdJ qWd}t jt|d t|dg W d   n1 sw   Y  d}t jt|d t|tddd W d   dS 1 sw   Y  dS )z=Check _get_column_indices for edge cases with the interchanger   r\   rq   r!   )schemar   Nr   r   r#   r$   r"   rA   r   rP   not_a_columnzkey.step must be 1 or None)r+   r,   r-   rX   r   rS   rT   NotImplementedError)r/   r0   key_resultsr2   resultmsgr:   r:   r;   #test_get_column_indices_interchange  s,   
"r   c                   C   s   t  d u sJ tt t dgddg W d    n1 sw   Y  tt t ddgddgddd W d    n1 s@w   Y  tt ddgdddksSJ d S )	Nr   r   Fr   )replace	n_samplesr   r   )r   )r   r+   rS   rT   r   r:   r:   r:   r;   test_resample  s    r   c               
   C   s   t g d} t g d}g }g }tdD ]&}|t| |d|| jd d  |t| |d|| jd d  qt |}t |}t	||}t 
|dksUJ |jdks\J d S )	N)r   r   )r   d   r   r   Tr   )r   random_stater   )sample_weightr   r   r   g?)r   rj   r_   r   appendr   repeatr   meanr   allpvalue)datar   mean_repeatedmean_reweightedseedtest_resultr:   r:   r;   test_resample_weighted  s:   



r   c                  C   s   t jd} d}d}| j|dfd}| jd||d}t||ddd d\}}t |dks.J t||dd|d\}}t |dkrBJ t |dksKJ d S )	Nr   r   g?r   sizer    r   r   stratifyr   )r   r   r   normalbinomialr   r   sum)r   r   pr   y_y_not_stratifiedy_stratifiedr:   r:   r;   test_resample_stratified)  s   r   c                  C   s   t jd} d}| j|dfd}| jdd|d}t||dd| |d\}}t||d	d| |d\}}t |jd dk s<J t |jd dksHJ t||dd
| |d\}}|jd d
ks]J t |jd dksiJ d S )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_replacer:   r:   r;    test_resample_stratified_replace9  s"   


r   c                  C   s\   t jd} d}| j|dfd}| jdd|dfd}t||d| |d\}}|jdks,J d S )Nr   r   r   r   r   r   r   )r   r   r   r   r   r   ndim)r   r   r   r   r:   r:   r;   test_resample_stratify_2dyR  s   r  c                   C   s   t jtdd tddgddgddgdd W d    n1 s w   Y  t jtdd tddgddgddgddgd W d    d S 1 sHw   Y  d S )	NzCResampling with sample_weight is only implemented for replace=True.rP   r   r   F)r   r   zCResampling with sample_weight is only implemented for stratify=None)r   r   )r+   rS   r   r   r:   r:   r:   r;   test_notimplementederror\  s   ""r  csr_containerc                 C   s   t jd}d}|j|dfd}|jdd|d}| |dd}tjtdd t	||d	||d
\}}W d    d S 1 s>w   Y  d S )Nr   r   r   r   r   r   zSparse data was passedrP   r   r   )
r   r   r   r   r   reshaper+   rS   rW   r   )r  r   r   r   r   r   r:   r:   r;   #test_resample_stratify_sparse_errorj  s   "r  c                  C   sZ   dd } t ddgddggddgd	d
ggg}t| |}t| t| ||ks+J d S )Nc                 S   s   t dd | D S )Nc                 s   s"    | ]}t d d |D V  qdS )c                 s   s    | ]}t |V  qd S rM   ro   ).0Cr:   r:   r;   	<genexpr>x  s    zPtest_shuffle_on_ndim_equals_three.<locals>.to_tuple.<locals>.<genexpr>.<genexpr>Nr  )r  Br:   r:   r;   r
  x  s     zFtest_shuffle_on_ndim_equals_three.<locals>.to_tuple.<locals>.<genexpr>r  )Ar:   r:   r;   to_tuplew  s   z3test_shuffle_on_ndim_equals_three.<locals>.to_tupler   r   r   r   r   r   rs   r   )r   rj   setr   )r  r  Sr:   r:   r;   !test_shuffle_on_ndim_equals_threev  s
   &r  csc_containerc                 C   s6  g d}t jg dtd}g d}tt jddgddgdd	ggtd}| t d
dd	}t|||||dd\}}}}	}
|g dksEJ t|tksMJ t	|g d |j
tks[J |g dkscJ t|tkskJ t	|	t jdd	gddgddggtd t|	tksJ t	|
 t ddgd	dgddgg d S )Nr!   rE   r\   r"   r   r#   r   r$   r   r   r   )r   )r$   r#   r"   )r   r   r   r   r   )r   rj   objectr   aranger  r   typeri   r   rF   toarray)r  r"   r#   r$   dea_sb_sc_sd_se_sr:   r:   r;   "test_shuffle_dont_convert_to_array  s   $&*r  )Qr   r   unittestr   numpyr   r+   scipy.statsr   r]   $sklearn.externals._packaging.versionr   r   sklearn.utilsr   r   r   sklearn.utils._array_apir	   r
   sklearn.utils._indexingr   r   r   sklearn.utils._mockingr   sklearn.utils._testingr   r   r   r   r   sklearn.utils.fixesr   r   r  r  r   r<   markparametrizebool_rX   rj   int32int64uint8r  rN   rU   rY   rg   ry   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  r  r:   r:   r:   r;   <module>   s$   !





.,





(

!

(


