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mZmZmZm	Z	 d dl
mZ d dlmZ i 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dd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ ZG d'd(„ d(ƒZ d)d*„ Z!d+d,„ Z"d-d.„ Z#dS )/é    N)ÚconfigurationÚcreate_config_fileÚpathsÚset_temp_config)Úget_pkg_data_filename)ÚAstropyDeprecationWarningc                   C   s   t  ¡  t  tj¡ d S ©N)Ú
OLD_CONFIGÚclearÚupdater   Ú_cfgobjs© r   r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/config/tests/test_configs.pyÚsetup_module   s    r   c                   C   s   t j ¡  t j t¡ d S r   )r   r   r
   r   r	   r   r   r   r   Úteardown_module   s    
r   c                   C   sL   dt  ¡ kst‚dt  ¡ ks t‚dt jdd�ks4t‚dt jdd�ksHt‚d S )NÚastropyÚtestpkg©Zrootname)r   Úget_config_dirÚAssertionErrorÚget_cache_dirr   r   r   r   Ú
test_paths   s    r   c              	      s°   t jtkst‚| tjdd ¡ tjdd�‰ | d  } ¡  |d ‰t |¡‡ ‡fdd„ƒ}|ƒ  tj|dd�� tjdd�t	ˆƒksˆt‚W 5 Q R X | 
¡ ržt‚t jtks¬t‚d S )	NÚ
_temp_pathr   r   Úconfigc               	      sR   t jdd�tˆƒkst‚t  ¡ �(} | ˆ   kr>t jdd�ksDn t‚W 5 Q R X d S ©Nr   r   )r   r   Ústrr   r   ©Úd©Zorig_config_dirZtemp_astropy_configr   r   Ú	test_func.   s    
z'test_set_temp_config.<locals>.test_funcT©Údelete)r   r   r	   r   Úsetattrr   r   r   Úmkdirr   Úexists)Útmp_pathÚmonkeypatchZtemp_config_dirr   r   r   r   Útest_set_temp_config#   s    "r'   c              	      s”   |  tjdd ¡ tjdd�‰ | d  } ¡  |d ‰t |¡‡ ‡fdd„ƒ}|ƒ  tj|dd�� tjdd�tˆƒkszt‚W 5 Q R X | ¡ r�t‚d S )	Nr   r   r   Úcachec               	      sR   t jdd�tˆƒkst‚t  ¡ �(} | ˆ   kr>t jdd�ksDn t‚W 5 Q R X d S r   )r   r   r   r   Úset_temp_cacher   ©Zorig_cache_dirZtemp_astropy_cacher   r   r   I   s    
z&test_set_temp_cache.<locals>.test_funcTr    )r"   r   r)   r   r#   r   r   r$   )r%   r&   Ztemp_cache_dirr   r   r*   r   Útest_set_temp_cacheA   s    "r+   c              
   C   sZ   t  ¡ }| d  } d¡ t t¡� t  |¡� W 5 Q R X W 5 Q R X |t  ¡ ksVt‚dS )z!Test for regression of  bug #9704Úaznot a good cache
N)r   r   Ú
write_textÚpytestÚraisesÚOSErrorr)   r   )r%   Útr,   r   r   r   Ú'test_set_temp_cache_resets_on_exceptionZ   s
    r2   c                  C   s´  ddl m} m} | dƒ}|j d¡s(t‚| dƒ}|jdks>t‚|jdksLt‚|jj d¡s^t‚| ddd	�}t	j
 |j¡ t	j¡}d
|ks”d|ks”t‚|d dks¤t‚d tjd< | dƒ}t	j
 |j¡ t	j¡}d
|ksàd|ksàt‚|d dksðt‚d tjd< | ddd	�}t	j
 |j¡ t	j¡}d|k�s4d|k�s4t‚|d dk�sFt‚d tjd< | ddd	�}t	j
 |jj¡ t	j¡}d|k�sŒd|k�sŒt‚|d dk�sžt‚d tjd< |dƒ d S )Nr   )Ú
get_configÚreload_configr   úastropy.cfgzastropy.configé   r   r   r   z.astropyéÿÿÿÿztestpkg.cfgz.testpkgztestpkg.somemodule)Úastropy.config.configurationr3   r4   ÚfilenameÚendswithr   ÚdepthÚnameÚparentÚosÚpathÚnormpathÚsplitÚsepr   r   )r3   r4   ÚapycfgZcfgsecZtestcfgÚpartsZtestcfg_secr   r   r   Útest_config_filec   s8    



rE   c                 C   sp   d| kst ‚d| kst ‚d| ks$t ‚d| ks0t ‚d| ks<t ‚d| ksHt ‚d| ksTt ‚d| ks`t ‚d	| kslt ‚d S )
Nú# unicode_output = Falsez	[io.fits]z[table]z# replace_warnings = ,z[table.jsviewer]zJ# css_urls = https://cdn.datatables.net/1.10.12/css/jquery.dataTables.css,z[visualization.wcsaxes]z1## Whether to log exceptions before raising them.z# log_exceptions = False)r   ©Úconfr   r   r   Úcheck_configŽ   s    rI   c              	   C   sn   ddl m} t ¡ }|d|ƒ | ¡ }| d }|d|ƒ t|ƒ�}| ¡ }W 5 Q R X ||fD ]}t|ƒ q\d S )Nr   ©Úgenerate_configr   r5   )r8   rK   ÚioÚStringIOÚgetvalueÚopenÚreadrI   )r%   rK   ÚoutrH   ÚoutfileÚfpZconf2Úcr   r   r   Útest_generate_config›   s    


rU   c              	   C   sp   t | ƒ� ddlm} |dƒ W 5 Q R X tj | d d ¡s@t‚t| d d ƒ�}| ¡ }W 5 Q R X t	|ƒ dS )z:Test that generate_config works with the default filename.r   rJ   r   r5   N)
r   r8   rK   r>   r?   r$   r   rO   rP   rI   )r%   rK   rS   rH   r   r   r   Útest_generate_config2«   s    
rV   c              	   C   s$  t | ƒ� tdƒ W 5 Q R X d|jd jks0t‚tj | d d ¡sHt‚t| d d ƒ�}| 	¡ }W 5 Q R X t
|ƒ | ¡  | dd¡}t| d d dd��}| |¡ W 5 Q R X t | ƒ� tdƒ W 5 Q R X d	|jd jksât‚| ¡  t | ƒ� tdd
d� W 5 Q R X d|jd jk�s t‚d S )Nr   z4The configuration file has been successfully writtenr   r5   rF   zunicode_output = TrueÚw)ÚmodezGThe configuration file already exists and seems to have been customizedT)Ú	overwrite)r   r   ÚrecordsÚmessager   r>   r?   r$   rO   rP   rI   r
   ÚreplaceÚwrite)r%   ZcaplogrS   rH   r   r   r   Útest_create_config_file»   s6    

ÿÿ

ÿÿ

ÿÿr^   c                     sP  ddl m} m}m} | ddƒ‰ G ‡ fdd„d|ƒ}|ƒ }ˆ jdksFt‚ˆ ƒ dksTt‚ˆ jdksbt‚|jdkspt‚|ˆ jƒ}|d dksŠt‚d	ˆ _ˆ  d
¡ ˆ ƒ d
ks¨t‚dˆ _ˆ  d¡ ˆ ƒ dksÆt‚dd„ |D ƒ}|dgksât‚dd„ | 	¡ D ƒ}|dgk�st‚dd„ | 
¡ D ƒ}|ˆ gk�s&t‚dd„ | ¡ D ƒ}|dˆ fgk�sLt‚d S )Nr   ©Ú
ConfigItemÚConfigNamespacer3   é"   zthis is a Descriptionc                       s   e Zd Z” ZdS )ztest_configitem.<locals>.ConfN)Ú__name__Ú
__module__Ú__qualname__Útstnmr   ©Úcir   r   ÚConfë   s   ri   z!astropy.config.tests.test_configsrf   zupdated Descré    c                 S   s   g | ]}|‘qS r   r   ©Ú.0Úxr   r   r   Ú
<listcomp>  s     z#test_configitem.<locals>.<listcomp>c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn     s     c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn     s     c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn   
  s     )r8   r`   ra   r3   Úmoduler   Údescriptionrf   ÚsetÚkeysÚvaluesÚitems)r`   ra   r3   ri   rH   ÚsecÚresultr   rg   r   Útest_configitemæ   s0    



rw   c               	      s’  ddl m} m} | dƒ‰ | dƒ‰| dƒ‰| dƒ‰G ‡ ‡‡‡fdd„d|ƒ}|ƒ }t|jtƒs`t‚t|jtƒspt‚t|j	t
ƒs€t‚t|jtƒs�t‚t t¡� d|_W 5 Q R X d	|_t t¡� d
|_	W 5 Q R X t t¡� d|_W 5 Q R X dd„ |D ƒ}|ddddgk�st‚dd„ | ¡ D ƒ}||k�s.t‚dd„ | ¡ D ƒ}|ˆ ˆˆˆgk�sVt‚dd„ | ¡ D ƒ}|dˆ fdˆfdˆfdˆfgk�sŽt‚d S )Nr   ©r`   ra   rb   gfffff&A@TZastringc                       s   e Zd Z” Z”Z”Z”ZdS )z#test_configitem_types.<locals>.ConfN)rc   rd   re   Útstnm1Útstnm2Útstnm3Útstnm4r   ©Zci1Zci2Zci3Zci4r   r   ri     s   ri   é   Zfasdg)\�Âõ�@c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn   ,  s     z)test_configitem_types.<locals>.<listcomp>ry   rz   r{   r|   c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn   .  s     c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn   0  s     c                 S   s   g | ]}|‘qS r   r   rk   r   r   r   rn   2  s     )r8   r`   ra   Ú
isinstancery   Úintr   rz   Úfloatr{   Úboolr|   r   r.   r/   Ú	TypeErrorrr   rs   rt   )r`   ra   ri   rH   Z
item_namesrv   r   r}   r   Útest_configitem_types  s>    ür„   c           
   	      s"  ddl m}m}m} |dddgƒ‰ G ‡ fdd„d|ƒ}|ˆ jƒ}tˆ ƒ tƒsPt‚ˆ ƒ dks^t‚|d dksnt‚ˆ  d¡ t	 
t¡� ˆ  d	¡ W 5 Q R X |d dks¨t‚|}|j|k	r¾|j}q¬| d
 }t|dƒ�}| |¡ W 5 Q R X t|dd��}dd„ | ¡ D ƒ}	W 5 Q R X d|	k�st‚d S )Nr   r_   Zop1Zop2Zop3c                       s   e Zd Z” ZdS )z%test_configitem_options.<locals>.ConfN)rc   rd   re   Útstnmor   ©Zcior   r   ri   @  s   ri   r…   Zop5r5   Úwbzutf-8©Úencodingc                 S   s   g | ]}|  ¡ ‘qS r   )Ústriprk   r   r   r   rn   V  s     z+test_configitem_options.<locals>.<listcomp>ztstnmo = op2)r8   r`   ra   r3   ro   r   r   r   rq   r.   r/   rƒ   r=   rO   r]   Ú	readlines)
r%   r`   ra   r3   ri   ru   rC   ÚfÚfdZlnsr   r†   r   Útest_configitem_options;  s(    


rŽ   c              	   C   sx   |   dd¡ |  d¡ |  tjdd¡ ddd„}|  td|¡ |  tdi ¡ t t¡� tj	d	d
� W 5 Q R X t
ƒ  dS )z‡
    Tests to make sure configuration items fall back to their defaults when
    there's a problem accessing the astropy directory
    ÚXDG_CONFIG_HOMEZfoor   Nc                 S   s   t ‚d S r   )r0   )ZdirnmÚlinktoÚpkgnamer   r   r   Úosraiserh  s    z0test_config_noastropy_fallback.<locals>.osraiserZ_find_or_create_root_dirr   r   r   )N)ZsetenvZdelenvr"   r   r   r   r.   r/   r0   r   rw   )r&   r’   r   r   r   Útest_config_noastropy_fallback[  s    

r“   c               	      sî   ddl m‰ m}  G ‡ fdd„d| ƒ}|ƒ }|jdks8t‚| dd¡� |jdksTt‚W 5 Q R X |jdkslt‚d|_|jdks€t‚| dd	¡� |jd	ksœt‚W 5 Q R X z | dd
¡�
 t‚W 5 Q R X W n tk
rÚ   Y nX |jdksêt‚d S )Nr   rx   c                       s   e Zd Z” ddƒZdS )z%test_configitem_setters.<locals>.Confé*   zthis is another DescriptionN)rc   rd   re   Útstnm12r   ©r`   r   r   ri   |  s   ri   r”   r•   é-   é+   é.   é/   )r8   r`   ra   r•   r   Zset_tempÚ	Exception)ra   ri   rH   r   r–   r   Útest_configitem_settersy  s"    rœ   c                  C   s@   ddl m}  dd„ }|dƒ}| |ƒs(t‚|dƒ}| |ƒr<t‚d S )Nr   )Úis_unedited_config_filec              
   S   s0   t t| ƒdd��}| ¡ W  5 Q R £ S Q R X d S )Nzlatin-1rˆ   )rO   r   rP   )Úfnr�   r   r   r   Úget_content™  s    z+test_empty_config_file.<locals>.get_contentzdata/empty.cfgzdata/not_empty.cfg)r8   r�   r   )r�   rŸ   Úcontentr   r   r   Útest_empty_config_file–  s    r¡   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestAliasReadc                 C   s   t dƒt_d S )Nzdata/alias.cfg)r   r   Ú_override_config_file)Úselfr   r   r   Úsetup_class¥  s    zTestAliasRead.setup_classc              	   C   sP   ddl m} tjtdd��}| ¡  |jdks2t‚W 5 Q R X t|ƒdksLt‚d S )Nr   rG   zQConfig parameter 'name_resolve_timeout' in section \[coordinates.name_resolve\].*)Úmatchr”   r6   )	Úastropy.utils.datarH   r.   Úwarnsr   ÚreloadZremote_timeoutr   Úlen)r¤   rH   rW   r   r   r   Útest_alias_read¨  s    þzTestAliasRead.test_alias_readc                 C   s   ddl m} d t_| ¡  d S )Nr   rG   )r§   rH   r   r£   r©   )r¤   rH   r   r   r   Úteardown_classµ  s    zTestAliasRead.teardown_classN)rc   rd   re   r¥   r«   r¬   r   r   r   r   r¢   ¤  s   r¢   c                     sl   ddl m} m}m} | dƒ‰ G ‡ fdd„d|ƒ}|ˆ jƒ}tˆ ƒ tƒsJt‚ˆ ƒ dksXt‚|d dksht‚d S )Nr   r_   u!   áƒ�áƒ¡áƒ¢áƒ áƒ�áƒœáƒ�áƒ›áƒ˜áƒ˜áƒ¡c                       s   e Zd Z” ZdS )z%test_configitem_unicode.<locals>.ConfN)rc   rd   re   Ú
tstunicoder   r†   r   r   ri   Á  s   ri   r­   )r8   r`   ra   r3   ro   r   r   r   )r`   ra   r3   ri   ru   r   r†   r   Útest_configitem_unicode¼  s    
r®   c               	   C   sd   ddl m}  tdƒt_z8t t¡�}|  ¡  | j	 W 5 Q R X t
|ƒdksLt‚W 5 d t_|  ¡  X d S )Nr   rG   zdata/deprecated.cfgr6   )r   rH   r   r   r£   r©   r.   r¨   r   Ú	max_linesrª   r   )rH   rW   r   r   r   Útest_warning_move_to_top_levelË  s    
r°   c                  C   sž   t j t¡} t j t j | ddd¡¡}t j ¡ }|g}| d¡rP| 	| d¡¡ t j
 |¡|d< dD ]}||krd||= qdtjtjddg|d�}|dksšt‚d S )Nz..Ú
PYTHONPATH)ÚHOMEr�   z-czimport astropy)Úenvr   )r>   r?   ÚdirnameÚ__file__ÚabspathÚjoinÚenvironÚcopyÚgetÚappendÚpathsepÚ
subprocessÚ
check_callÚsysÚ
executabler   )Z	test_pathZastropy_pathr³   r   ÚvalÚretcoder   r   r   Útest_no_homeÜ  s    

rÃ   )$rL   r>   r½   r¿   r.   Zastropy.configr   r   r   r   r§   r   Zastropy.utils.exceptionsr   r	   r   r   r   r'   r+   r2   rE   rI   rU   rV   r^   rw   r„   rŽ   r“   rœ   r¡   r¢   r®   r°   rÃ   r   r   r   r   Ú<module>   s:   	++(- 