U
    f»{j—  ã                   @   sˆ   d dl m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mZ dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Úassert_array_equal)Úparallel_func)ÚProgressBarÚarray_split_idxÚuse_log_levelÚcatch_loggingc              
   C   sœ  t  d¡}t|ƒ}||jks t‚|jdks.t‚tdƒ}|jdksDt‚|jdksRt‚dd„ }tjtdd�� ||ƒ W 5 Q R X |  	dd¡ t
d	ƒ�*}tt  d
¡ƒ�}|D ]}q¦W 5 Q R X W 5 Q R X | ¡ }d|ksÔt‚|  	dd¡ tjtdd�� tt  d
¡ƒ W 5 Q R X |  	dd¡ tjtdd�� tt  d
¡ƒ W 5 Q R X |  	dd¡ t
d	ƒ�,}tt  d
¡ƒ�}|D ]}�qfW 5 Q R X W 5 Q R X | ¡ }d|k�s˜t‚dS )zTest progressbar class.é
   Nc                 S   s   | D ]}qd S ©N© )ÚaÚiir
   r
   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/utils/tests/test_progressbar.pyÚ	iter_func   s    z#test_progressbar.<locals>.iter_funcznot iterable)ÚmatchZMNE_TQDMZtqdmÚdebugé   zUsing ProgressBar with tqdm
ÚbrokenzInvalid value for theztqdm.brokenzUnknown tqdmÚoffzUsing ProgressBar with off
)ÚnpÚaranger   ÚiterableÚAssertionErrorZ	max_valueÚpytestZraisesÚ	TypeErrorZsetenvr   ÚgetvalueÚ
ValueError)Zmonkeypatchr   Zpbarr   ÚlogÚpr
   r
   r   Útest_progressbar   s8    
r   c                 C   s   | S r	   r
   )Úxr
   r
   r   Ú	_identity9   s    r    c              	      sˆ   |   ¡ jdkst‚ttdddd�\}‰ }tdƒ�  |‡ fdd„tdƒD ƒƒ}W 5 Q R X |ttdƒƒksjt‚|   ¡ }|j}d|ks„t‚d	S )
z8Test ProgressBar with parallel computing, basic version.Ú r   é   T)ÚtotalÚn_jobsÚverbosec                 3   s   | ]}ˆ |ƒV  qd S r	   r
   )Ú.0r   ©Úp_funr
   r   Ú	<genexpr>C   s     z2test_progressbar_parallel_basic.<locals>.<genexpr>ú100%N)	Ú
readouterrÚoutr   r   r    r   ÚrangeÚlistÚerr)ÚcapsysÚparallelÚ_r,   Úcapr
   r'   r   Útest_progressbar_parallel_basic=   s    ÿ
$r4   c                 C   s$   t t| ƒƒD ]}| |d ¡ q| S )Nr"   )r-   ÚlenÚupdate)r   Úpbr   r
   r
   r   Ú_identity_blockJ   s    r8   c              
      sø   |   ¡ jdkst‚ttddd�\}‰ }t d¡}tdƒ�t tt	|ƒƒ�\‰|‡ ‡fdd„t
|d	ƒD ƒƒ}t ˆj¡svt‚tjˆjd
ddd� ¡ }|t	|ƒksžt‚W 5 Q R X W 5 Q R X t ˆj¡rÆtdƒ‚t |¡}t||ƒ |   ¡ }|j}d|ksôt‚dS )ú;Test ProgressBar with parallel computing, advanced version.r!   r"   F©r$   r%   r   Tc                 3   s"   | ]\}}ˆ |ˆ  |¡ƒV  qd S r	   ©Zsubset©r&   Zpb_idxr   ©r(   r7   r
   r   r)   Y   s   ÿz5test_progressbar_parallel_advanced.<locals>.<genexpr>é   ÚboolÚr©ZdtypeÚmodeÚshapeú__exit__ not called?r*   N)r+   r,   r   r   r8   r   r   r   r   r5   r   ÚopÚisfileÚ_mmap_fnameÚmemmapÚsumÚconcatenater   r/   )r0   r1   r2   Úarrr,   Úsum_r3   r
   r=   r   Ú"test_progressbar_parallel_advancedP   s*    ÿ

ÿÿ
$

rM   c                 C   s@   t t| ƒƒD ](}t dƒD ]}| |d | d ¡ qq| |jfS )Nr>   r"   )r-   r5   r6   Úidx)r   r7   r   Zjjr
   r
   r   Ú_identity_block_wideg   s    rO   c              
      s<  |   ¡ jdkst‚ttddd�\}‰ }t d¡}tdƒ�È tt	|ƒd ƒ�¬‰|‡ ‡fdd	„t
|ddd
�D ƒƒ}t dd„ |D ƒ¡}t|t t	|ƒd ¡ƒ t dd„ |D ƒ¡}t ˆj¡s¾t‚tjˆjddt	|ƒd d� ¡ }|t	|ƒd ksòt‚W 5 Q R X W 5 Q R X t ˆj¡�rtdƒ‚|   ¡ }|j}d|k�s8t‚dS )r9   r!   r"   Fr:   r   Tr>   c                 3   s"   | ]\}}ˆ |ˆ  |¡ƒV  qd S r	   r;   r<   r=   r
   r   r)   w   s   ÿz1test_progressbar_parallel_more.<locals>.<genexpr>)Zn_per_splitc                 S   s   g | ]}|d  ‘qS )r"   r
   ©r&   Úor
   r
   r   Ú
<listcomp>z   s     z2test_progressbar_parallel_more.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS )r   r
   rP   r
   r
   r   rR   |   s     r?   r@   rA   rD   r*   N)r+   r,   r   r   rO   r   r   r   r   r5   r   rJ   r   rE   rF   rG   rH   rI   r/   )r0   r1   r2   rK   r,   ZidxsrL   r3   r
   r=   r   Útest_progressbar_parallel_moren   s4    ÿ

  ÿÿ
ÿ
(rS   )Úos.pathÚpathrE   Únumpyr   Znumpy.testingr   r   Zmne.parallelr   Z	mne.utilsr   r   r   r   r   r    r4   r8   rM   rO   rS   r
   r
   r
   r   Ú<module>   s   (