U
    ½mœdi  ã                   @   sˆ  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Zd dlZd dl	m
Z d dlmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlm Z  d dlm!Z! d dlm"Z" d dlm#Z# d dl$m%Z% d dl&m'Z' e (d¡ )d¡Z*dd„ Z+dd„ Z,dd„ Z-d d!„ Z.d"d#„ Z/d$d%„ Z0d&d'„ Z1d(d)„ Z2d*d+„ Z3d,d-„ Z4ej5 6d.d/d0d1e 7d2¡d3fd d4d5gd6fd7d8d9gd:fd;d<e8ddƒdfe8d d5ƒd6fej9d d4d5gej:d=�d6fej9d d4d5gej;d=�d6fej9d d4d5gej<d=�d6fd2d>gd3fd?e 9d2d>g¡d3fd@dAdBdCgd:fdDe8dEdFƒd:fe 9dAdBdCg¡d:fej9dAdBdCge=d=�d:fg¡dGdH„ ƒZ>dIdJ„ Z?dKdL„ Z@ej5 6dMdNdOdPdQg¡ej5 6dRdNdSdOdTdUg¡dVdW„ ƒƒZAej5 6dMdNdOdTg¡ej5 6dRdNdSdOdTdUg¡dXdY„ ƒƒZBej5 6dMdOdPdQg¡ej5 6dRdNdSdOdTdUg¡ej5 6dZd4d5gdBdCgg¡d[d\„ ƒƒƒZCej5 6d]d2d>g¡ej5 6d^d2d>g¡ej5 6dMdOdPdQg¡ej5 6dRdOdTg¡ej5 6d_d d`dadbgdcdddggfd4d5degdadbgdddggfg¡dfdg„ ƒƒƒƒƒZDej5 6dMdNdOdTg¡ej5 6dRdNdSdOdTg¡dhdi„ ƒƒZEej5 6dMdOdPdQg¡ej5 6dRdNdSdOdTg¡ej5 6djd d`dadbgdcdddggfd4d5degdadbgdddggfg¡dkdl„ ƒƒƒZFej5 6dmdndodpdqg¡drds„ ƒZGej5 6dMdNdOdTg¡dtdu„ ƒZHej5 6dmdodpdqg¡ej5 6dZd5dCg¡dvdw„ ƒƒZIej5 6dMdNdOdPg¡dxdy„ ƒZJdzd{„ ZKej5 6d|ddeg¡d}d~„ ƒZLej5 6ddOdTg¡d€d�„ ƒZMd‚dƒ„ ZNd„d…„ ZOej5 6d†d‡dˆg¡d‰dŠ„ ƒZPej5 6d‹dŒgd�gdŒd�gdŒdŽgd�dŽgg¡d�d�„ ƒZQd‘d’„ ZRd“d”„ ZSd•d–„ ZTej5 6d—d˜d™dšd›dœd�džg¡dŸd „ ƒZUd¡d¢„ ZVej5 6d£d¤d¥gd¦ejWd>fd§ejWd>fd¦ejWde d2fd¨ejWd2fd¦ejWd© d>fg¡ej5 6dªd«gd¬d­d®d¯g¡d°d±„ ƒƒZXej5 6d¤d²gd³ed¦d³d´ƒdµ fd¶ed¦d¶d´ƒdµ fd·g¡d¸d¹„ ƒZYej5 6dºeZd»ƒd2fej[d2feZej[ƒd2fe \ej[¡d2fe ]ej[¡d2fd¼d½d¾d¿dÀej[gd>fdÁg¡dÂdÃ„ ƒZ^dÄdÅ„ Z_dÆdÇ„ Z`dÈdÉ„ Zaej5 6dÊe 9d4¡e 9d5¡gd4d5gded`ggg¡dËdÌ„ ƒZbej5 6dMdOdPdQg¡dÍdÎ„ ƒZcdS )Ïé    )Úcopy)ÚchainN)Úassert_array_equalÚassert_allclose_dense_sparseÚassert_no_warningsÚ_convert_container)Úcheck_random_state)Ú_determine_key_type)Ú
deprecated)Úgen_batches)Ú_get_column_indices)Úresample)Ú	safe_mask)Úcolumn_or_1d)Ú_safe_indexing)Ú_safe_assign)Úshuffle)Úgen_even_slices)Ú_message_with_timeÚ_print_elapsed_time)Úget_chunk_n_rows)Úis_scalar_nan)Ú_to_object_array)Ú_approximate_mode)ÚMockDataFrame)Úconfig_contexté	   )é   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sšt‚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)   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/utils/tests/test_utils.pyÚtest_make_rng)   s    r+   c               	   C   s„   t ttddƒƒtddd ƒtddd ƒgƒ d} tjt| d�� ttddƒƒ W 5 Q R X d}tjt|d�� ttddƒƒ W 5 Q R X d S )Né   é   r   z.gen_batches got batch_size=0, must be positive©Úmatchz2gen_batches got batch_size=0.5, must be an integerg      à?)	r   Úlistr   Úslicer&   r'   r(   ÚnextÚ	TypeError)Zmsg_zeroZ	msg_floatr)   r)   r*   Útest_gen_batches;   s    (r4   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ƒsÂt‚t| ƒdksÒt‚t| d jtƒsæt‚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*   ÚhamP   s    ztest_deprecated.<locals>.hamr7   é   r   r
   zdon't use thisc                   @   s   e Zd ZdZdS )ztest_deprecated.<locals>.Hamr9   N)Ú__name__Ú
__module__Ú__qualname__ÚSPAMr)   r)   r)   r*   ÚHam`   s   r>   r=   )ÚwarningsÚcatch_warningsÚsimplefilterr
   r#   ÚlenÚ
issubclassÚcategoryÚFutureWarningÚstrÚmessageÚlowerÚhasattr)Úwr8   r7   r>   r)   r)   r*   Útest_deprecatedH   s$    

$
rK   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   r9   Fr   )ÚreplaceÚ	n_samplesr-   é   )rM   )r   r#   r&   r'   r(   rB   r)   r)   r)   r*   Útest_resamplem   s    "rO   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¡r„t‚t  |¡dks–t‚d S )	Nr   r   gÍÌÌÌÌÌì?r9   ©Úsizeé
   ©rM   Úrandom_stateÚstratifyr   )	r!   r"   r$   ÚnormalZbinomialr   Úallr#   Úsum)ÚrngrM   ÚpÚXÚyÚ_Zy_not_stratifiedZ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 sxt‚t  |¡jd dks�t‚t||dd
| |d�\}}|jd d
ksºt‚t  |¡jd dksÒt‚d S )Nr   r   r9   rP   r-   Té2   )rL   rM   rT   rU   Féè  )	r!   r"   r$   rV   r%   r   ÚuniqueÚshaper#   )rY   rM   r[   r\   Z	X_replacer]   ZX_no_replacer)   r)   r*   Ú test_resample_stratified_replace‹   s@         ÿ
     ÿ
     ÿ
rc   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   r9   rP   r-   r_   rS   )r!   r"   r$   rV   r%   r   Úndimr#   )rY   rM   r[   r\   r)   r)   r*   Útest_resample_stratify_2dy¤   s    re   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   r-   rP   zA sparse matrix was passedr.   r_   rS   )r!   r"   r$   rV   r%   ÚspÚ
csr_matrixr&   r'   r3   r   )rY   rM   r[   r\   rU   r)   r)   r*   Ú#test_resample_stratify_sparse_error®   s    
rh   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   rN   r,   FTr   )r   Zrandrf   rg   r   rb   r#   )rT   r[   ZX_csrÚmaskr)   r)   r*   Útest_safe_mask¹   s    


rj   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rútt|ƒt  |¡ƒ qÔt t¡� t|ƒ W 5 Q R X qÔd S )NÚbinaryr7   Úeggr   r9   Ú
continuousrR   g      4@Ú
multiclassr-   r   zmultilabel-indicatorzmulticlass-multioutputrN   r,   zcontinuous-multioutputé   )éÿÿÿÿr   )rk   rn   rm   )	r!   ÚarangeÚreshaper   r   Zravelr&   r'   r(   )ZEXAMPLESZy_typer\   r)   r)   r*   Útest_column_or_1dÆ   s$    ôrs   z
key, dtype)r   Úint)Ú0rF   )TÚboolTrv   r9   r-   rt   ru   Ú1Ú2rF   ))r   r9   r-   rt   ))ru   rw   rx   rF   ©ÚdtypeF))TFrv   )Úcol_0rF   r{   Úcol_1Úcol_2))r{   r|   r}   rF   ÚbeginÚendc                 C   s   t | ƒ|kst‚d S ©N)r	   r#   )Úkeyrz   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   r-   r9   F)Zaccept_slice)r&   r'   r3   r	   r1   r)   r)   r)   r*   Ú#test_determine_key_type_slice_error  s    r…   Ú
array_typer0   ÚarrayÚsparseÚ	dataframeÚindices_typeÚtupleÚseriesr1   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 ©Nr9   r-   r1   r   r,   rN   é   é   é   r   r   ©Úaxis©Ú
isinstancert   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rªd}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 )Nr1   r9   r{   r|   r}   r-   r   r,   rN   rŽ   r�   r�   r   r   r‰   úLSpecifying the columns using strings is only supported for pandas DataFramesr.   r‘   )
r   r”   rt   r   rF   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_arrayr,   rN   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 )Nr9   r-   r   r,   rN   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_1?  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 )NFTr-   rŽ   r9   r   r,   rN   r�   r�   r   r   r‘   ©r   r   r   r•   r)   r)   r*   Ú$test_safe_indexing_1d_container_maskU  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 )Nr{   r|   r}   r9   r-   r   r,   rN   rŽ   r�   r�   r   FTr‘   r£   )r†   rŠ   r’   Zexpected_subsetr›   r‡   r–   r—   r)   r)   r*   Útest_safe_indexing_2d_mask_  s    
  ÿ

 ÿr¥   z array_type, expected_output_type)r0   r0   )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 ©Nr9   r-   r   r,   rN   rŽ   r�   r�   r   r   r‘   r£   )r†   Úexpected_output_typer‡   r–   r—   r¡   r)   r)   r*   Ú#test_safe_indexing_2d_scalar_axis_0s  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_scalar„  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rždgd	gdgg}t ||ƒ}t||ƒ d S )Nr{   r|   r}   r9   r-   r   r,   rN   rŽ   r�   r�   r   r‰   rš   r.   r‘   rˆ   )r   r”   rF   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†   r[   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ƒ   r9   r‘   )r&   ÚimportorskipÚ	DataFrameÚX_toyr'   r(   r   )Úpdrœ   r[   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   r9   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 )
NrN   r‡   rŒ   r¬   z:'X' should be a 2D NumPy array, 2D sparse matrix or pandasr.   r   r9   r‘   )
r0   Úranger!   Zasarrayr&   r­   ZSeriesr'   r(   r   )r³   r[   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 )Nr|   r}   r9   r-   r   r,   rN   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s”t‚d S )Nr¬   r9   r-   r   r,   rN   )ÚaÚbr   r‘   ÚSettingWithCopyWarningÚerrorrR   )r   r   )r&   r­   r®   r   rI   Úerrorsr¹   ÚcoreÚcommonr?   r@   rA   Zilocr#   )r°   r[   r—   r¹   r)   r)   r*   Ú4test_safe_indexing_pandas_no_settingwithcopy_warningÕ  s    



r¾   zkey, err_msg)rR   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¬   r{   r|   r}   ©Ú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¬   )r9   rN   ry   rÂ   rÃ   rÄ   r¿   z1Selected columns, {}, are not unique in dataframe)r&   r­   r!   Zzerosrt   r®   Úformatr'   r(   r   rF   Úvaluer#   )r�   r°   ZtoyrÀ   r[   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_tupler9   r-   r   r,   rN   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s”t	‚t
|ƒtks¤t	‚t|dddgƒ |jtksÂt	‚|dddgksÔt	‚t
|ƒtksät	‚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¸   Úcry   r9   r-   r   r   rŽ   )rT   r,   rN   )r!   r‡   Úobjectr   rf   Z
csc_matrixrq   rr   r   r#   Útyper0   r   rz   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 )NrR   c                    s   g | ]}ˆ | ‘qS r)   r)   )rÊ   r1   ©Z
some_ranger)   r*   Ú
<listcomp>,  s     z(test_gen_even_slices.<locals>.<listcomp>r   rp   z+gen_even_slices got n_packs=-1, must be >=1r.   )	r´   r0   r   r   r   r&   r'   r(   r2   )Zjoined_rangeZslicesr)   rÙ   r*   Útest_gen_even_slices)  s     

rÛ   )Ú	row_bytesÚ
max_n_rowsÚworking_memoryÚexpected)é   Nr9   rà   )rà   NgGœ¡úÿÿï?éÿ  )rá   Nr9   é  )râ   Nr9   rá   )rà   Nr-   i   )rà   r�   r9   r�   )i   Nr9   r9   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s’t‚t|ƒt|ƒks¦t‚W 5 Q R X d S )Nrº   ©rÜ   rÝ   rÞ   ©rÞ   ©rÜ   rÝ   )r?   r@   rA   ÚUserWarningr   r#   rÕ   r   )rÜ   rÝ   rÞ   rß   Úactualr)   r)   r*   Útest_get_chunk_n_rows5  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sšt‚t|ƒt|ƒks®t‚W 5 Q R X dS )	z<Check that warning is raised when working_memory is too low.i  Nr9   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_warnsT  s&    ÿýré   ÚsourcerG   Ú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¡sŠt‚|d tdƒ … }| |¡sªt‚|d t|ƒ … }| d¡sÊt‚|d d… }|rä|rút‚ntt|ƒƒdgksút‚d S )	NéF   ú[z] r   z, total=ú rp   Ú.)r   rB   r#   Ú
startswithÚendswithr0   rÐ   )rê   rG   rë   rí   rî   Úoutr)   r)   r*   Útest_message_with_timeo  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#   )rG   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]v—i—eøFc                 C   s&   t | ƒ|kst‚tt | ƒtƒs"t‚d S r€   )r   r#   r”   rv   )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 )
zþMake 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¸‚ r`   ry   i¨a  r   )Zclass_countsZn_drawsrY   i®`  éú   N)r!   r‡   Úint32r   r   )r[   Ú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ÚOr9   )r   r”   r!   Zndarrayr#   rz   Úkindrd   )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   rR   rN   r9   r-   )Úrow_indexerr‘   )Úcolumn_indexer)NNN)
r!   r"   r$   ZrandnrB   rb   r   r   r   r   )r†   rY   ZX_arrayr  Úvaluesr[   Zassigned_portionr  r)   r)   r*   Útest_safe_assignì  s2    
 ÿ
 ÿ
r  )dr   Ú	itertoolsr   r?   Ústringrþ   r&   Únumpyr!   Zscipy.sparserˆ   rf   Zsklearn.utils._testingr   r   r   r   r  r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsklearn.utils._mockingr   Zsklearnr   rq   rr   r¯   r+   r4   rK   rO   r^   rc   re   rh   rj   rs   ÚmarkZparametrizeZbool_r1   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>   s�  %

êþ

 0ÿ0þüþ	

þ


þþ
 ÿ

ùþ



ûþ
üþ	ýþ


ôþ
,
