U
    e»{j>  ã                   @   sÊ  d dl 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
 d dlmZmZ ejZejZz
eƒ ZW n ek
rŠ   dZY nX dd„ ZeZdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej j!edk	dd�dd„ ƒZ"ej  #d¡dd„ ƒZ$ej  #d¡d d!„ ƒZ%ej j&d"d�d#d$„ ƒZ'ej  (d%dd&d'd(d)g¡d*d+„ ƒZ)d,d-„ Z*d.d/„ Z+d0d1„ Z,ej  (d%dd&d'd(d)g¡d2d3„ ƒZ-d4d5„ Z.d6d7„ Z/d8d9„ Z0ej  (d:d;d<d=g¡d>d?„ ƒZ1dS )@é    N)Úlog)ÚLoggingErrorÚconf)ÚAstropyUserWarningÚAstropyWarningc                 C   sL   t  t¡ t  t¡ d t_d t_t ¡  t ¡ r8t 	¡  t 
¡ rHt ¡  d S ©N)Ú	importlibÚreloadÚwarningsÚsysr   Ú_showwarning_origZ_excepthook_origZ_set_defaultsZwarnings_logging_enabledÚdisable_warnings_loggingZexception_logging_enabledÚdisable_exception_logging)Úfunction© r   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/tests/test_logger.pyÚsetup_function   s    

r   c                	   C   s&   t jtdd�� t ¡  W 5 Q R X d S )Nz%Warnings logging has not been enabled©Úmatch)ÚpytestÚraisesr   r   r   r   r   r   r   Ú'test_warnings_logging_disable_no_enable1   s    r   c                	   C   s.   t  ¡  tjtdd�� t  ¡  W 5 Q R X d S )Nz)Warnings logging has already been enabledr   )r   Úenable_warnings_loggingr   r   r   r   r   r   r   Ú"test_warnings_logging_enable_twice6   s     ÿr   c                	   C   s8   t  ¡  dd„ t_tjtdd�� t  ¡  W 5 Q R X d S )Nc                   S   s   d S r   r   r   r   r   r   Ú<lambda>@   ó    z2test_warnings_logging_overridden.<locals>.<lambda>ziCannot disable warnings logging: warnings\.showwarning was not set by this logger, or has been overriddenr   )r   r   r
   Úshowwarningr   r   r   r   r   r   r   r   Ú test_warnings_logging_overridden>   s    
þr   c               
   C   s  t jtdd��&} t ¡ �}t dt¡ W 5 Q R X W 5 Q R X t|ƒdksJt‚t| ƒdksZt‚tj	dd��6} t 
¡  t ¡ �}t dt¡ W 5 Q R X t ¡  W 5 Q R X t|ƒdks²t‚t| ƒdksÂt‚|d jdksÔt‚|d j d¡sèt‚|d jdksút‚t jtd	d��@} t 
¡  t ¡ �}t dt¡ t d	¡ W 5 Q R X t ¡  W 5 Q R X t|ƒdk�s`t‚t| ƒdk�srt‚|d jdk�s†t‚|d j d¡�sœt‚|d jdk�s°t‚t jtdd��&} t ¡ �}t dt¡ W 5 Q R X W 5 Q R X t|ƒdk�süt‚t| ƒdk�st‚d S )
NúThis is a warningr   r   é   T©ÚrecordÚWARNINGúastropy.tests.test_loggerz)This is another warning, not from Astropy)r   Zwarnsr   r   Úlog_to_listr
   ÚwarnÚlenÚAssertionErrorÚcatch_warningsr   r   Ú	levelnameÚmessageÚ
startswithÚoriginÚUserWarning)Ú	warn_listÚlog_listr   r   r   Útest_warnings_loggingI   sF    
 
 ÿ

 r0   c               
   C   s´   G dd„ dt ƒ} tjdd��6}t ¡  t ¡ �}t d| ¡ W 5 Q R X t ¡  W 5 Q R X t|ƒdksht	‚t|ƒdksxt	‚|d j
dksŠt	‚|d j d	¡sžt	‚|d jd
ks°t	‚d S )Nc                   @   s   e Zd ZdS )zJtest_warnings_logging_with_custom_class.<locals>.CustomAstropyWarningClassN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚCustomAstropyWarningClassu   s   r4   Tr    r   r   r   r"   z,CustomAstropyWarningClass: This is a warningr#   )r   r
   r(   r   r   r$   r%   r   r&   r'   r)   r*   r+   r,   )r4   r.   r/   r   r   r   Ú'test_warnings_logging_with_custom_classt   s    

ÿr5   c               
   C   s¶   ddl m} m} tjdd��4}t ¡  t ¡ �}|| dƒ W 5 Q R X t ¡  W 5 Q R X t	|ƒdksft
‚t	|ƒdksvt
‚|d jdksˆt
‚|d j d¡}|s t
‚|d jd	ks²t
‚d S )
Nr   )ÚW02Úvo_warnTr    )ÚaÚbr   r"   zGW02: ?:?:?: W02: a attribute 'b' is invalid.  Must be a standard XML idr#   )Zastropy.io.votable.exceptionsr6   r7   r
   r(   r   r   r$   r   r&   r'   r)   r*   r+   r,   )r6   r7   r.   r/   Úxr   r   r   Ú,test_warning_logging_with_io_votable_warning‡   s    

ÿr;   c                  C   sJ   G dd„ dƒ} t  ¡  | ƒ tjd< zt tdƒtdd¡ W 5 tjd= X dS )z¬
    Regression test for https://github.com/astropy/astropy/issues/2671

    This test actually puts a goofy fake module into ``sys.modules`` to test
    this problem.
    c                   @   s   e Zd Zdd„ ZdS )z8test_import_error_in_warning_logging.<locals>.FakeModulec                 S   s   t dƒ‚d S )Nz._showwarning should ignore any exceptions here)ÚImportError)ÚselfÚattrr   r   r   Ú__getattr__¢   s    zDtest_import_error_in_warning_logging.<locals>.FakeModule.__getattr__N)r1   r2   r3   r?   r   r   r   r   Ú
FakeModule¡   s   r@   z<test fake module>zRegression test for #2671z<this is only a test>r   N)r   r   r   Úmodulesr
   r   r   )r@   r   r   r   Ú$test_import_error_in_warning_logging™   s    ürB   c                	   C   s&   t jtdd�� t ¡  W 5 Q R X d S )Nz&Exception logging has not been enabledr   )r   r   r   r   r   r   r   r   r   Ú(test_exception_logging_disable_no_enable³   s    rC   c                	   C   s.   t  ¡  tjtdd�� t  ¡  W 5 Q R X d S )Nz*Exception logging has already been enabledr   )r   Úenable_exception_loggingr   r   r   r   r   r   r   Ú#test_exception_logging_enable_twice¸   s     ÿrE   z,Cannot override exception handler in IPython)Úreasonc                	   C   s8   t  ¡  dd„ t_tjtdd�� t  ¡  W 5 Q R X d S )Nc                 S   s   d S r   r   )ÚetypeZevalueÚtbr   r   r   r   Å   r   z3test_exception_logging_overridden.<locals>.<lambda>zcCannot disable exception logging: sys.excepthook was not set by this logger, or has been overriddenr   )r   rD   r   Ú
excepthookr   r   r   r   r   r   r   r   Ú!test_exception_logging_overriddenÀ   s    
ýrJ   zip is not Nonec               
   C   sÐ  z t  ¡ �} tdƒ‚W 5 Q R X W nB tk
rb } z$tjt ¡ Ž  |jd dksRt‚W 5 d }~X Y n
X dslt‚t| ƒdks|t‚z(t  	¡  t  ¡ �} tdƒ‚W 5 Q R X W nB tk
ræ } z$tjt ¡ Ž  |jd dksÖt‚W 5 d }~X Y n
X dsðt‚t| ƒdk�st‚| d j
dk�st‚| d j d¡�s,t‚| d jdk�s@t‚t  ¡  z t  ¡ �} tdƒ‚W 5 Q R X W nF tk
�r® } z&tjt ¡ Ž  |jd dk�sžt‚W 5 d }~X Y nX d�sºt‚t| ƒdk�sÌt‚d S )NzThis is an Exceptionr   Fr   ÚERRORzException: This is an Exceptionr#   )r   r$   Ú	Exceptionr   rI   Úexc_infoÚargsr'   r&   rD   r)   r*   r+   r,   r   )r/   Úexcr   r   r   Útest_exception_loggingÐ   s:    
$
$
&
rP   c               
   C   sØ   ddl m}  | tƒ}z*t ¡  t ¡ �}| d¡ W 5 Q R X W nD tk
r‚ } z&tj	t 
¡ Ž  |jd  d¡srt‚W 5 d }~X Y n
X dsŒt‚t|ƒdksœt‚|d jdks®t‚|d j d¡sÂt‚|d jd	ksÔt‚d S )
Nr   )ÚHomogeneousListZfooz3homogeneous list must contain only objects of type Fr   rK   z>TypeError: homogeneous list must contain only objects of type zastropy.utils.collections)Zastropy.utils.collectionsrQ   Úintr   rD   r$   ÚappendÚ	TypeErrorr   rI   rM   rN   r+   r'   r&   r)   r*   r,   )rQ   Úlstr/   rO   r   r   r   Útest_exception_logging_originù   s$    

ÿ
ÿrV   z8Infinite recursion on Python 3.5+, probably a real issuec               	   C   sœ   z&t  ¡  t  ¡ �} tƒ ‚W 5 Q R X W n" tk
rH   tjt ¡ Ž  Y n
X dsRt‚t| ƒdksbt‚| d j	dkstt‚| d j
dks†t‚| d jdks˜t‚dS )zÞ
    Regression test for a crash that occurred on Python 3 when logging an
    exception that was instantiated with no arguments (no message, etc.)

    Regression test for https://github.com/astropy/astropy/pull/4056
    Fr   r   rK   z%Exception [astropy.tests.test_logger]r#   N)r   rD   r$   rL   r   rI   rM   r'   r&   r)   r*   r,   ©r/   r   r   r   Ú(test_exception_logging_argless_exception  s    

rX   ÚlevelÚDEBUGÚINFOÚWARNrK   c              	   C   sþ  t j}zR| d k	rt  | ¡ t  ¡ �.}t  d¡ t  d¡ t  d¡ t  d¡ W 5 Q R X W 5 t  |¡ X | d krttj	} | dkrŽt
|ƒdksÚt‚nL| dkr¨t
|ƒdksÚt‚n2| d	krÂt
|ƒd
ksÚt‚n| dkrÚt
|ƒdksÚt‚|d jdksìt‚|d j d¡�st‚|d jdk�st‚t
|ƒd
k�rb|d jdk�s8t‚|d j d¡�sNt‚|d jdk�sbt‚t
|ƒdk�r®|d
 jdk�s„t‚|d
 j d¡�sšt‚|d
 jdk�s®t‚t
|ƒdk�rú|d jdk�sÐt‚|d j d¡�sæt‚|d jdk�sút‚d S )NúError messageúWarning messageúInformation messageúDebug messagerZ   é   r[   é   r\   é   rK   r   r   r#   r"   )r   rY   ÚsetLevelr$   ÚerrorÚwarningÚinfoÚdebugr   Ú	log_levelr&   r'   r)   r*   r+   r,   )rY   Ú
orig_levelr/   r   r   r   Útest_log_to_list,  sF    




rk   c               	   C   sN   t jdd��} t  d¡ t  d¡ W 5 Q R X t| ƒdkrF| d jdksJt‚d S )NrK   ©Zfilter_levelr]   r^   r   r   )r   r$   re   rf   r&   r)   r'   rW   r   r   r   Útest_log_to_list_level`  s    
rm   c               	   C   s@   t jdd��} t  d¡ t  d¡ W 5 Q R X t| ƒdks<t‚d S )Núastropy.tests©Zfilter_originr]   r^   rc   ©r   r$   re   rf   r&   r'   rW   r   r   r   Útest_log_to_list_origin1h  s    
rq   c               	   C   s@   t jdd��} t  d¡ t  d¡ W 5 Q R X t| ƒdks<t‚d S )Núastropy.wcsro   r]   r^   r   rp   rW   r   r   r   Útest_log_to_list_origin2p  s    
rs   c              	   C   sÚ  | d }|  d¡}t| ¡ ƒ}tj}z\|d k	r8t |¡ t |¡�. t d¡ t d¡ t 	d¡ t 
d¡ W 5 Q R X | ¡  W 5 t |¡ X |  d¡}| ¡ }| ¡  |d kr¶tj}|dkrÐt|ƒd	ksÎt‚nT|d
krêt|ƒdksèt‚n:|dk�rt|ƒdk�s$t‚n|dk�r$t|ƒdk�s$t‚t|d  ¡ ƒdd … dk�sFt‚t|ƒdk�rvt|d  ¡ ƒdd … dk�svt‚t|ƒdk�r¦t|d  ¡ ƒdd … dk�s¦t‚t|ƒd	k�rÖt|d  ¡ ƒdd … dk�sÖt‚d S )Nútest.logÚwbr]   r^   r_   r`   ÚrbrZ   ra   r[   rb   r\   rc   rK   r   r   éýÿÿÿ)r#   rK   r]   )r#   r"   r^   )r#   r[   r_   )r#   rZ   r`   )ÚopenÚstrÚresolver   rY   rd   Úlog_to_filere   rf   rg   rh   ÚcloseÚ	readlinesr   ri   r&   r'   ÚevalÚstrip)Útmp_pathrY   Ú
local_pathÚlog_fileÚlog_pathrj   Úlog_entriesr   r   r   Útest_log_to_filex  sD    







"""r…   c              	   C   s¢   | d }|  d¡}t| ¡ ƒ}tj|dd�� t d¡ t d¡ W 5 Q R X | ¡  |  d¡}| ¡ }| ¡  t	|ƒdks~t
‚t|d	  ¡ ƒd
d … dksžt
‚d S )Nrt   ru   rK   rl   r]   r^   rv   r   r   éþÿÿÿ)rK   r]   )rx   ry   rz   r   r{   re   rf   r|   r}   r&   r'   r~   r   ©r€   r�   r‚   rƒ   r„   r   r   r   Útest_log_to_file_level½  s    


rˆ   c              	   C   s‚   | d }|  d¡}t| ¡ ƒ}tj|dd�� t d¡ t d¡ W 5 Q R X | ¡  |  d¡}| ¡ }| ¡  t	|ƒdks~t
‚d S )	Nrt   ru   rn   ro   r]   r^   rv   rc   ©rx   ry   rz   r   r{   re   rf   r|   r}   r&   r'   r‡   r   r   r   Útest_log_to_file_origin1Ð  s    


rŠ   c              	   C   s‚   | d }|  d¡}t| ¡ ƒ}tj|dd�� t d¡ t d¡ W 5 Q R X | ¡  |  d¡}| ¡ }| ¡  t	|ƒdks~t
‚d S )	Nrt   ru   rr   ro   r]   r^   rv   r   r‰   r‡   r   r   r   Útest_log_to_file_origin2â  s    


r‹   ÚencodingÚ zutf-8Úcp1252c              	   C   s‚   | d }t | ¡ ƒ}tj}|t_t |¡�H tjD ]:}t|tj	ƒr2|rX|j
j|kslt‚q2|j
jt ¡ ks2t‚q2W 5 Q R X |t_d S )Nrt   )ry   rz   r   Zlog_file_encodingr   r{   ÚhandlersÚ
isinstanceÚloggingÚFileHandlerÚstreamrŒ   r'   ÚlocaleÚgetpreferredencoding)r€   rŒ   r�   rƒ   Zorig_encodingÚhandlerr   r   r   Útest_log_to_file_encodingô  s    
 r—   )2r   r”   r‘   r   r
   r   Zastropyr   Zastropy.loggerr   r   Zastropy.utils.exceptionsr   r   Ú__excepthook__Ú_excepthookr   Ú_showwarningÚget_ipythonÚipÚ	NameErrorr   Zteardown_moduler   r   r   r0   r5   r;   rB   rC   rE   ÚmarkZskipifrJ   ZxfailrP   rV   ÚskiprX   Zparametrizerk   rm   rq   rs   r…   rˆ   rŠ   r‹   r—   r   r   r   r   Ú<module>   s`   

+ ÿ


(



3
D