U
    9%ef                     @   s  d dl Z d dlZ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mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z! d dl"m#Z#m$Z$m%Z%m&Z& e'd(d	Z)d
d Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd Z2ej34dddde5d d!fd d"d#gd$fd%d&d'gd(fd)d*e6dddfe6d d#d$fej7d d"d#gej8d+d$fej7d d"d#gej9d+d$fej7d d"d#gej:d+d$fd d,gd!fd-e7d d,gd!fd.d/d0d1gd(fd2e6d3d4d(fe7d/d0d1gd(fej7d/d0d1ge;d+d(fgd5d6 Z<d7d8 Z=d9d: Z>ej34d;d<d=d>d?gej34d@d<dAd=dBdCgdDdE Z?ej34d;d<d=dBgej34d@d<dAd=dBdCgdFdG Z@ej34d;d=d>d?gej34d@d<dAd=dBdCgej34dHd"d#gd0d1ggdIdJ ZAej34dKd d,gej34dLd d,gej34d;d=d>d?gej34d@d=dBgej34dMd dNdOdPgdQdRdggfd"d#dSgdOdPgdRdggfgdTdU ZBej34d;d<d=dBgej34d@d<dAd=dBgdVdW ZCej34d;d=d>d?gej34d@d<dAd=dBgej34dXd dNdOdPgdQdRdggfd"d#dSgdOdPgdRdggfgdYdZ ZDej34d[d\d]d^d_gd`da ZEej34d;d<d=dBgdbdc ZFej34d[d]d^d_gej34dHd#d1gddde ZGej34d;d<d=d>gdfdg ZHdhdi ZIej34djddSgdkdl ZJej34dmd=dBgdndo ZKdpdq ZLdrds ZMej34dtdudvgdwdx ZNej34dydzgd{gdzd{gdzd|gd{d|ggd}d~ ZOdd ZPdd ZQdd ZRej34ddddddddgdd ZSdd ZTej34dddgde jUd,fde jUd,fde jUdS d fde jUd fde jUd d,fgej34ddgddddgdd ZVej34ddgdedddd fdedddd fdgdd ZWej34deXdd fejYd feXejYd feZejYd fe[ejYd fdddddejYgd,fdgdd Z\dd Z]dd Z^dd Z_ej34de7d"e7d#gd"d#gdSdNgggdd Z`ej34d;d=d>d?gdd ZadS )    N)copy)chain)config_context)_approximate_mode_determine_key_type_get_column_indices_message_with_time_print_elapsed_time_safe_assign_safe_indexing_to_object_arraycheck_random_statecolumn_or_1d
deprecatedgen_even_slicesget_chunk_n_rowsis_scalar_nanresample	safe_maskshuffle)MockDataFrame)_convert_containerassert_allclose_dense_sparseassert_array_equalassert_no_warnings	   )   r   c               	   C   s   t d tjjjkstt tjtjjjks.ttjd} t dd| dksVttjd} t | | ksrttjd} t dd| dkstt	t
 t d W 5 Q R X d S )N*   d   +   zsome invalid seed)r   nprandomZmtrandZ_randAssertionErrorRandomStaterandintpytestraises
ValueError)Zrng_42 r(   ]/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sklearn/utils/tests/test_utils.pytest_make_rng+   s    r*   c               	   C   s  t jddn} t d t dd }| }|dks8tt| dksHtt| d jts\td	t	| d j
 ksvtW 5 Q R X t jddz} t d td
G dd d}| }t|dstt| dkstt| d jtstd	t	| d j
 kstW 5 Q R X d S )NT)recordalwaysc                   S   s   dS )Nspamr(   r(   r(   r(   r)   hamE   s    ztest_deprecated.<locals>.hamr-      r   r   zdon't use thisc                   @   s   e Zd ZdZdS )ztest_deprecated.<locals>.Hamr/   N)__name__
__module____qualname__SPAMr(   r(   r(   r)   HamU   s   r4   r3   )warningscatch_warningssimplefilterr   r"   len
issubclasscategoryFutureWarningstrmessagelowerhasattr)wr.   r-   r4   r(   r(   r)   test_deprecated=   s$    

$
rA   c                	   C   s   t  d ksttt t dgddg W 5 Q R X tt t ddgddgddd W 5 Q R X tt ddgdddks~td S )	Nr   r/   Fr   )replace	n_samples      )rC   )r   r"   r%   r&   r'   r8   r(   r(   r(   r)   test_resampleb   s    "rF   c                  C   s   t jd} d}d}| j|dfd}| jd||d}t||ddd d\}}t |dks\tt||dd|d\}}t |dkrtt |dkstd S )	Nr   r   g?r/   size
   rC   random_statestratifyr   )	r    r!   r#   normalZbinomialr   allr"   sum)rngrC   pXy_Zy_not_stratifiedZy_stratifiedr(   r(   r)   test_resample_stratifiedp   s    rU   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 sxtt |jd dkstt||dd
| |d\}}|jd d
kstt |jd dkstd S )Nr   r   r/   rG   rD   T2   )rB   rC   rK   rL   F  )	r    r!   r#   rM   r$   r   uniqueshaper"   )rP   rC   rR   rS   Z	X_replacerT   ZX_no_replacer(   r(   r)    test_resample_stratified_replace   s@         
     
     
rZ   c                  C   s\   t jd} d}| j|dfd}| jdd|dfd}t||d| |d\}}|jdksXtd S )Nr   r   r/   rG   rD   rV   rJ   )r    r!   r#   rM   r$   r   ndimr"   )rP   rC   rR   rS   r(   r(   r)   test_resample_stratify_2dy   s    r\   c               	   C   sn   t jd} d}| j|dfd}| jdd|d}t|}tjt	dd t
||d| |d\}}W 5 Q R X d S )	Nr   r   rD   rG   zA sparse matrix was passedmatchrV   rJ   )r    r!   r#   rM   r$   sp
csr_matrixr%   r&   	TypeErrorr   )rP   rC   rR   rS   rL   r(   r(   r)   #test_resample_stratify_sparse_error   s    
rb   c                  C   sp   t d} | dd}t|}dddddg}t||}|| jd dksLtt||}|| jd dksltd S )Nr   rE      FTr   )r   Zrandr_   r`   r   rY   r"   )rK   rR   ZX_csrmaskr(   r(   r)   test_safe_mask   s    


re   c                  C   s  ddddgfdddddgfdt dd fd	dd
dgfd	ddd
d
dgfd	dgd
gdggfddddgdddggfddd
dggfdddgd
d
gddggfdddgdd
gddggfddd
dggfdt ddfg} | D ]D\}}|dkrtt|t | qtt t| W 5 Q R X qd S )Nbinaryr-   eggr   r/   
continuousrI   g      4@
multiclassrD   r   zmultilabel-indicatorzmulticlass-multioutputrE   rc   zcontinuous-multioutput   )r   )rf   ri   rh   )	r    arangereshaper   r   Zravelr%   r&   r'   )ZEXAMPLESZy_typerS   r(   r(   r)   test_column_or_1d   s$    rn   z
key, dtype)r   int)0r<   )TboolTrq   r/   rD   ro   rp   12r<   ))r   r/   rD   ro   ))rp   rr   rs   r<   dtypeF))TFrq   )col_0r<   rv   col_1col_2))rv   rw   rx   r<   beginendc                 C   s   t | |kstd S N)r   r"   )keyru   r(   r(   r)   test_determine_key_type   s    r}   c                	   C   s&   t jtdd td W 5 Q R X d S )NzNo valid specification of ther]         ?)r%   r&   r'   r   r(   r(   r(   r)   test_determine_key_type_error   s    r   c                	   C   s2   t jtdd ttddddd W 5 Q R X d S )NzOnly array-like or scalar arer]   r   rD   r/   F)Zaccept_slice)r%   r&   ra   r   slicer(   r(   r(   r)   #test_determine_key_type_slice_error   s    r   
array_typelistarraysparse	dataframeindices_typetupleseriesr   c                 C   s   ddg}|dkr.t |d tr.|d  d7  < tdddgdddgdd	d
gg| }t||}t||dd}t|tdddgdd	d
gg|  d S Nr/   rD   r   r   rc   rE            r   r   axis
isinstancero   r   r   r   r   r   indicesr   subsetr(   r(   r)   &test_safe_indexing_2d_container_axis_0   s    "
 r   c              
   C   sz   ddg}|dkr.t |d tr.|d  d7  < tdddddddd	d
g	| }t||}t||dd}t|tddg|  d S r   r   r   r(   r(   r)   test_safe_indexing_1d_container
  s    
r   r   c              	   C   s   t |}|dkr.t|d tr.|d  d7  < dddg}tdddgdd	d
gdddgg| |}t||}t|d tr| dkrd}tjt|d t||dd W 5 Q R X n0t||dd}t	|tddgd	d
gddgg|  d S )Nr   r/   rv   rw   rx   rD   r   rc   rE   r   r   r   r   r   r   LSpecifying the columns using strings is only supported for pandas DataFramesr]   r   )
r   r   ro   r   r<   r%   r&   r'   r   r   )r   r   r   Zindices_convertedcolumns_namer   err_msgr   r(   r(   r)   &test_safe_indexing_2d_container_axis_1  s(    
  
 r   array_read_onlyindices_read_onlyzaxis, expected_arrayrc   rE   r   r   r   r   c           	      C   s   t dddgdddgddd	gg}| r2|jd
d t||}t ddg}|rZ|jd
d t||}t|||d}t|t|| d S )Nr/   rD   r   rc   rE   r   r   r   r   F)writer   )r    r   Zsetflagsr   r   r   )	r   r   r   r   r   expected_arrayr   r   r   r(   r(   r)   &test_safe_indexing_2d_read_only_axis_14  s    
"

r   c              
   C   sf   dgdgd  dgd  }t ddddddd	d
dg	| }t ||}t||dd}t|t ddg|  d S )NFTrD   r   r/   r   rc   rE   r   r   r   r   r   r   r   r   r   r(   r(   r)   $test_safe_indexing_1d_container_maskJ  s
    
r   zaxis, expected_subsetc                 C   sd   dddg}t dddgddd	gd
ddgg| |}dddg}t ||}t|||d}t|t ||  d S )Nrv   rw   rx   r/   rD   r   rc   rE   r   r   r   r   FTr   r   )r   r   r   Zexpected_subsetr   r   r   r   r(   r(   r)   test_safe_indexing_2d_maskT  s    
  

 r   z array_type, expected_output_type)r   r   )r   r   )r   r   )r   r   c                 C   sR   t dddgdddgddd	gg| }d}t||d
d}t ddd	g|}t|| d S Nr/   rD   r   rc   rE   r   r   r   r   r   r   r   )r   expected_output_typer   r   r   r   r(   r(   r)   #test_safe_indexing_2d_scalar_axis_0h  s
    
"r   c              
   C   s>   t ddddddddd	g	| }d}t||d
d}|dks:td S r   )r   r   r"   )r   r   r   r   r(   r(   r)   test_safe_indexing_1d_scalary  s    r   c           	   	   C   s   dddg}t dddgddd	gd
ddgg| |}t|trn| dkrnd}tjt|d t||dd W 5 Q R X nDt||dd}dd	dg}|dkrdgd	gdgg}t ||}t|| d S )Nrv   rw   rx   r/   rD   r   rc   rE   r   r   r   r   r   r   r]   r   r   )r   r   r<   r%   r&   r'   r   r   )	r   r   r   r   r   r   r   Zexpected_outputr   r(   r(   r)   #test_safe_indexing_2d_scalar_axis_1  s"    
  

r   c                 C   s>   t dddgdddgddd	gg| }t|d d
d}t|| d S r   r   )r   rR   ZX_subsetr(   r(   r)   test_safe_indexing_None_axis_0  s    "r   c               	   C   sF   t d} d}| t}t jt|d t|dgdd W 5 Q R X d S )Npandasz&No valid specification of the columns.r]   r~   r/   r   )r%   importorskip	DataFrameX_toyr&   r'   r   )pdr   rR   r(   r(   r)   0test_safe_indexing_pandas_no_matching_cols_error  s
    

r   r   c              	   C   s0   t jtdd ttddg| d W 5 Q R X d S )Nz'axis' should be either 0r]   r   r/   r   )r%   r&   r'   r   r   r   r(   r(   r)   test_safe_indexing_error_axis  s    r   X_constructorc              	   C   sp   t td}| dkr t|} n| dkr<td}||} d}tjt|d t	| ddgdd	 W 5 Q R X d S )
NrE   r   r   r   z:'X' should be a 2D NumPy array, 2D sparse matrix or pandasr]   r   r/   r   )
r   ranger    Zasarrayr%   r   ZSeriesr&   r'   r   )r   rR   r   r   r(   r(   r)   !test_safe_indexing_1d_array_error  s    

r   c               	   C   sT   ddg} dddgdddgd	d
dgg}d}t jt|d t|| dd W 5 Q R X d S )Nrw   rx   r/   rD   r   rc   rE   r   r   r   r   z.String indexing is not supported with 'axis=0'r]   r   r   )r%   r&   r'   r   )r   r   r   r(   r(   r)   4test_safe_indexing_container_axis_0_unsupported_type  s
    r   c               	   C   s   t d} | dddgdddgd}t|ddgdd	}t| jd
rN| jj}n
| jjj}t	
  t	d| d|jd< W 5 Q R X |jd dkstd S )Nr   r/   rD   r   rc   rE   )abr   r   SettingWithCopyWarningerrorrI   )r   r   )r%   r   r   r   r?   errorsr   corecommonr5   r6   r7   Zilocr"   )r   rR   r   r   r(   r(   r)   4test_safe_indexing_pandas_no_settingwithcopy_warning  s    



r   zkey, err_msg)rI   z all features must be in \[0, 2\])Zwhateverz/A given column is not a column of the dataframec              	   C   sF   t d}|jtdddgd}t jt|d t||  W 5 Q R X d S )Nr   rv   rw   rx   columnsr]   )r%   r   r   r   r&   r'   r   )r|   r   r   ZX_dfr(   r(   r)   test_get_column_indices_error  s    
r   r|   col1col2col3c              	   C   st   t d}tjdtd}dddddg}|j||d}d| }t t}t	||  W 5 Q R X t
|j|ksptd S )	Nr   )r/   rE   rt   r   r   r   r   z1Selected columns, {}, are not unique in dataframe)r%   r   r    Zzerosro   r   formatr&   r'   r   r<   valuer"   )r|   r   Ztoyr   rR   r   exc_infor(   r(   r)   6test_get_column_indices_pandas_nonunique_columns_error  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sVt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 r{   r   ).0Cr(   r(   r)   	<genexpr>  s     zPtest_shuffle_on_ndim_equals_three.<locals>.to_tuple.<locals>.<genexpr>.<genexpr>Nr   )r   Br(   r(   r)   r     s     zFtest_shuffle_on_ndim_equals_three.<locals>.to_tuple.<locals>.<genexpr>r   )Ar(   r(   r)   to_tuple  s    z3test_shuffle_on_ndim_equals_three.<locals>.to_tupler/   rD   r   rc   rE   r   r   r   )r    r   setr   r"   )r   r   Sr(   r(   r)   !test_shuffle_on_ndim_equals_three  s
    &r   c            
      C   sF  dddg} t jdddgtd}dddg}tt jddgddgddggtd}tt d	dd}t| ||||dd
\}}}}}	|dddgkst	t
|tkst	t|dddg |jtkst	|dddgkst	t
|tkst	t|t jddgddgddggtd t
|tkst	t|	 t ddgddgddgg d S )Nr   r   crt   r/   rD   r   r   r   )rK   rc   rE   )r    r   objectr   r_   Z
csc_matrixrl   rm   r   r"   typer   r   ru   Ztoarray)
r   r   r   deZa_sZb_sZc_sZd_sZe_sr(   r(   r)   "test_shuffle_dont_convert_to_array  s    

$&r   c               	      sb   t d tt fddtddD  } t |  tdd}tjtdd t| W 5 Q R X d S )NrI   c                    s   g | ]} | qS r(   r(   )r   r   Z
some_ranger(   r)   
<listcomp>!  s     z(test_gen_even_slices.<locals>.<listcomp>r   rk   z+gen_even_slices got n_packs=-1, must be >=1r]   )	r   r   r   r   r   r%   r&   r'   next)Zjoined_rangeZslicesr(   r   r)   test_gen_even_slices  s     

r   )	row_bytes
max_n_rowsworking_memoryexpected)   Nr/   r   )r   NgG?  )r   Nr/     )r   Nr/   r   )r   NrD   i   )r   r   r/   r   )i   Nr/   r/   c              
   C   s   t    t dt t| ||d}W 5 Q R X ||ks:tt|t|ksNtt|dR t   t dt t| |d}W 5 Q R X ||kstt|t|kstW 5 Q R X d S )Nr   r   r   r   r   r   r   )r5   r6   r7   UserWarningr   r"   r   r   )r   r   r   r   actualr(   r(   r)   test_get_chunk_n_rows*  s    

r   c               
   C   s   d} d}d}d}d}t jt|d t| ||d}W 5 Q R X ||ksHtt|t|ks\tt|dL t jt|d t| |d}W 5 Q R X ||kstt|t|kstW 5 Q R X dS )	z<Check that warning is raised when working_memory is too low.i  Nr/   zICould not adhere to working_memory config. Currently 1MiB, 2MiB required.r]   r   r   r   )r%   Zwarnsr   r   r"   r   r   )r   r   r   r   Zwarn_msgr   r(   r(   r)   test_get_chunk_n_rows_warnsI  s&    r   sourcer=   is_longABCZABCDEFZABCABCABCABCABCABCABCABCABCABCu   ၈timetime_str)g?z   0.2s)   z  20.0s)i  z33.3min)i N  z333.3minc                 C   s   t | ||}|r"t|dks2tnt|dks2t|d|  d sHt|t| d d  }||sjt|d t|  }|dst|d td  }||st|d t|  }|dst|d d }|r|rtntt|dgkstd S )	NF   [z] r   z, total= rk   .)r   r8   r"   
startswithendswithr   r   )r   r=   r   r   r   outr(   r(   r)   test_message_with_timed  s"    
r   r   Zhello皙?
 )Nr   c              	   C   sP   | tddd  td|  | tddd  W 5 Q R X | j|ksLtd S )NZdefault_timerc                   S   s   dS )Nr   r(   r(   r(   r(   r)   <lambda>      z)test_print_elapsed_time.<locals>.<lambda>r   c                   S   s   dS )Nr   r(   r(   r(   r(   r)   r     r   )setattrtimeitr	   Z
readouterrr   r"   )r=   r   ZcapsysZmonkeypatchr(   r(   r)   test_print_elapsed_time  s    	r   zvalue, resultnan)r   F)g        F)NF)r   F)r   F)l   	H]vieFc                 C   s&   t | |ksttt | ts"td S r{   )r   r"   r   rq   )r   resultr(   r(   r)   test_is_scalar_nan  s    r   c                  C   s4   t jddgt jd} t| ddd}t|ddg d	S )
zMake sure sklearn.utils._approximate_mode returns valid
    results for cases where "class_counts * n_draws" is enough
    to overflow 32-bit signed integer.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20774
    i rW   rt   ia  r   )Zclass_countsZn_drawsrP   i`     N)r    r   int32r   r   )rR   retr(   r(   r)   test_approximate_mode  s    r  c                   C   s   d S r{   r(   r(   r(   r(   r)   
dummy_func  s    r  c                 C   sB   ddl m}m} t|dd  t|dd  ddlm} |jjd= d S )Nr   )parallel_backendregister_parallel_backendZlokyZfailing)joblib)sklearn.utilsr  r  r   Zsklearn.utils._joblibr  parallelZBACKENDS)Ztmpdirr  r  r  r(   r(   r)   test_deprecation_joblib_api  s
    r  sequencec                 C   s:   t | }t|tjst|jjdks(t|jdks6td S )NOr/   )r   r   r    Zndarrayr"   ru   kindr[   )r  r   r(   r(   r)   test_to_object_array  s    r  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   rI   rE   r/   rD   )row_indexerr   )column_indexer)NNN)
r    r!   r#   Zrandnr8   rY   r   r
   r   r   )r   rP   ZX_arrayr  valuesrR   Zassigned_portionr  r(   r(   r)   test_safe_assign  s2    
 
 
r  )bstringr   r5   r   	itertoolsr   numpyr    r%   Zscipy.sparser   r_   Zsklearnr   r	  r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Zsklearn.utils._mockingr   Zsklearn.utils._testingr   r   r   r   rl   rm   r   r*   rA   rF   rU   rZ   r\   rb   re   rn   markZparametrizeZbool_r   r   r  Zint64Zuint8r   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   ascii_lowercaser   r   floatr   Zfloat32Zfloat64r   r  r  r  r  r  r(   r(   r(   r)   <module>   sn  L%



 00	





 






	



,
