U
    f»{j3!  ã                   @   sB  d dl 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	m
Z
mZmZ d dlmZ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 d dlmZ e e e¡ddddd	¡Z e e d
¡Z!e e d¡Z"e e d¡Z#e e d¡Z$ed"dd„ƒZ%dd„ Z&dd„ Z'g fdd„Z(dd„ Z)ej* +dd¡dd„ ƒZ,dd„ Z-dd„ Z.d d!„ Z/dS )#é    N)Úread_evokedsÚEpochsÚcreate_info)Úread_raw_fifÚRawArray)
ÚwarnÚset_log_levelÚset_log_fileÚfilter_out_warningsÚverboseÚ_get_call_lineÚuse_log_levelÚcatch_loggingÚloggerÚcheck)Ú_frame_infoz..ÚioZtestsÚdataztest_raw.fifztest-ave.fifztest-ave.logztest-ave-2.logc                 C   s   t  d¡ d S )NZTest)r   Údebug©r   © r   ú[/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/utils/tests/test_logging.pyÚ_fun   s    r   c              	   C   sÖ   t dƒ}dt|ƒ  k r dk s&n t‚|dd… \}}t d|¡dk	sNt|ƒ‚d|ksZt‚|  ¡  tddd�� tƒ  W 5 Q R X |  ¡ \}}| d	d
¡}t d|¡dk	s°t|ƒ‚| 	ddd„ ¡ t dƒdgksÒt‚dS )zTest _frame_info.éd   é   Nz^test_logging:[1-9][0-9]$Úpytestr   é   )Z
add_framesÚ
ú zC.*pytest.*test_logging:[2-9][0-9] .*test_logging:[1-9][0-9] :.*Testzinspect.currentframec                   S   s   d S ©Nr   r   r   r   r   Ú<lambda>,   ó    z!test_frame_info.<locals>.<lambda>é   Úunknown)
r   ÚlenÚAssertionErrorÚreÚmatchÚ
readouterrr   r   ÚreplaceÚsetattr)ÚcapsysÚmonkeypatchÚstackÚthisZpytest_lineÚoutÚ_r   r   r   Útest_frame_info   s(    ýýýr1   c               	   C   sx   t jtdd��6} t dt¡ t dt¡ t dt¡ t dt¡ W 5 Q R X t| tdd� t| td� t| ƒdkstt‚d	S )
z1Test filter some messages out of warning records.Zbb©r'   z
aa warningz
bb warningZaa)Úcategoryr'   )r3   r"   N)	r   ÚwarnsÚUserWarningÚwarningsr   ÚRuntimeWarningr
   r$   r%   )Úwr   r   r   Útest_how_to_deal_with_warnings0   s    r9   c                 C   s   dd„ | D ƒS )z>Scrub filenames for checking logging output (in test_logging).c                 S   s   g | ]}d |kr|nd‘qS )zReading zReading test filer   )Ú.0Úliner   r   r   Ú
<listcomp>>   s   ÿzclean_lines.<locals>.<listcomp>r   )Úlinesr   r   r   Úclean_lines<   s    ÿr>   c              
   C   sJ  t dƒ�� tjtdd�� tdƒ W 5 Q R X t| ƒ}t |d¡}tt	dƒ�}t
| ¡ ƒ}| d¡ W 5 Q R X ttdƒ�&}t
| ¡ ƒ}| d¡ | d¡ W 5 Q R X t |¡r¸t |¡ t|ƒ td	ƒ ttd
d�}t|ƒ�}| ¡ g ksît‚W 5 Q R X ttd
dd�}t|ƒ�}| ¡ g k�s"t‚W 5 Q R X ttd
d	d�}t|ƒ�}| ¡ g k�sVt‚W 5 Q R X ttd
dd�}t|dƒ�}	t
|	 ¡ ƒ}
W 5 Q R X |
|k�sžt‚tdƒ t |¡ t|ƒ tdƒ ttd
d	d�}t|ƒ�}| ¡ g k�sêt‚W 5 Q R X ttd
dd�}t|ƒ�}| ¡ g k�st‚W 5 Q R X ttd
d�}t|dƒ�}	t
|	 ¡ ƒ}
W 5 Q R X |
|k�sdt‚t|dd� tjtdd�� t|ƒ W 5 Q R X ttd
d�}t|dƒ�}	t
|	 ¡ ƒ}
W 5 Q R X |
|k�sÎt‚t|dd� ttd
d�}~t|dƒ�}	t
|	 ¡ ƒ}
W 5 Q R X |
|k�st‚W 5 Q R X tƒ �}W 5 Q R X | ¡ dk�sFt‚dS )zTest logging (to file).NzInvalid value for the 'verboser2   Úfooztest.logÚréÿÿÿÿé   ÚWARNINGr"   )Ú	conditionF)rD   r   TÚINFO©Ú	overwritezappended to the fileÚ )r   r   ÚraisesÚ
ValueErrorr   ÚstrÚopÚjoinÚopenÚ	fname_logr>   Ú	readlinesÚpopÚfname_log_2ÚisfileÚosÚremover	   r   Úfname_evokedr%   r4   r7   r   Úgetvalue)Útmp_pathÚtempdirZ	test_nameZold_log_fileZ	old_linesZold_log_file_2Zold_lines_2ZevokedZfidZnew_log_fileÚ	new_linesÚlogr   r   r   Útest_logging_optionsB   sv    









r\   r   )TFc              	   C   s  t t| d�}tƒ �}|jdd� W 5 Q R X | ¡ }d|ks>t‚tƒ �}|jdd� W 5 Q R X | ¡ }|dkspt‚t |jd ddggt	¡}t
||| d�}tƒ �}|jdd� W 5 Q R X | ¡ }d	|ksÊt‚t
||| d�}tƒ �}|jdd� W 5 Q R X | ¡ }|dk�st‚d
S )zTest for gh-8772.r   TzReading 0 ... 14399FrH   éÈ   r   r"   z0 bad epochs droppedN)r   Ú	fname_rawr   Z	load_datarW   r%   ÚnpÚarrayZ
first_sampÚintr   Zdrop_bad)r   Úrawr[   ÚeventsZepochsr   r   r   Útest_verbose_method‘   s(    rd   c              	   C   s&  t jtdd�� tdƒ W 5 Q R X |  ¡ }|jdks8t‚|jdksFt‚|d }tt	 
d¡tdddƒƒ}t jtd	d��}| |¡ W 5 Q R X t|ƒdksšt‚d
|d jks¬t‚dd„ }| td|¡ t jtd	d��}|j|dd� W 5 Q R X t|ƒdksút‚d
|d jk�st‚d|d jk�s"t‚dS )zTest the smart warn() function.r?   r2   rH   zbad.fif)r"   r"   r"   g     @�@ZeegÚfilenameztest_logging.pyr   c                 S   s   t | dd� d S )Nr   )Zignore_namespaces)r   )Úmsgr   r   r   Ú	warn_wrap»   s    ztest_warn.<locals>.warn_wrapr   TrF   z_logging.pyN)r   r4   r7   r   r(   r/   r%   Úerrr   r_   Zzerosr   Úsaver$   re   r*   r   )r+   rX   r,   ZcapturedZbad_namerb   Úwsrg   r   r   r   Ú	test_warn¬   s$    rk   c                  C   sL   t d
dd„ƒ} dD ]}| |d�}|dkst‚qdd„ }|ƒ }|d	ksHt‚dS )zTest getting a call line.Nc                 S   s   t ƒ S r   ©r   r   r   r   r   r?   É   s    ztest_get_call_line.<locals>.foo)NTr   z#my_line = foo(verbose=v)  # testingc                   S   s   t ƒ S r   rl   r   r   r   r   ÚbarÑ   s    ztest_get_call_line.<locals>.barzmy_line = bar()  # testing more)N)r   r%   )r?   ÚvZmy_linerm   r   r   r   Útest_get_call_lineÇ   s    
ro   c               	   C   sÚ   t dd„ ƒ} tjtdd�� | ƒ  W 5 Q R X G dd„ dƒ}|ƒ }tƒ �}|jdd� W 5 Q R X | ¡ }|d	ksrt‚tƒ �}|jd
d� W 5 Q R X | ¡ }d|ks¤t‚tƒ �}|jdd� W 5 Q R X | ¡ }|d	ksÖt‚dS )z:Test that the verbose decorator is strict about usability.c                   S   s   d S r   r   r   r   r   r   Úbad_verboseÚ   s    z,test_verbose_strictness.<locals>.bad_verbosezdoes not acceptr2   c                   @   s   e Zd Zeddd„ƒZdS )z%test_verbose_strictness.<locals>.OkayNc                 S   s   t  d¡ d S )NÚmeth_2)r   Úinfo)Úselfr   r   r   r   rq   ã   s    z,test_verbose_strictness.<locals>.Okay.meth_2)N)Ú__name__Ú
__module__Ú__qualname__r   rq   r   r   r   r   ÚOkayá   s   rw   Fr   rH   Trq   N)r   r   rI   ÚRuntimeErrorr   rq   rW   r%   )rp   rw   Úor[   r   r   r   Útest_verbose_strictnessØ   s$    
rz   )N)0rT   Úos.pathÚpathrL   r&   r6   Únumpyr_   r   Zmner   r   r   Zmne.ior   r   Z	mne.utilsr   r   r	   r
   r   r   r   r   r   r   Zmne.utils._loggingr   rM   ÚdirnameÚ__file__Úbase_dirr^   rV   rO   rR   r   r1   r9   r>   r\   ÚmarkZparametrizerd   rk   ro   rz   r   r   r   r   Ú<module>   s2   0O
