
    HR-e:                         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 Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d d          Z d Z!d Z"d Z#dS )    N)configurationcreate_config_filepathsset_temp_config)get_pkg_data_filename)AstropyDeprecationWarningc                      t                                            t                               t          j                   d S N)
OLD_CONFIGclearupdater   _cfgobjs     Alib/python3.11/site-packages/astropy/config/tests/test_configs.pysetup_moduler      s1    m,-----r   c                      t           j                                         t           j                            t                     d S r
   )r   r   r   r   r   r   r   r   teardown_moduler      s4      """!!*-----r   c                      dt          j                    v sJ dt          j                    v sJ dt          j        d          v sJ dt          j        d          v sJ d S )Nastropytestpkgrootname)r   get_config_dirget_cache_dirr   r   r   
test_pathsr      sz    ,......+------,i@@@@@@@+Y?????????r   c                 <   t           j        t          k    sJ |                    t          j        dd            t	          j        d          | dz  x}                                 |dz  t	          j        |          fd            } |             t	          j        |d          5  t	          j        d          t                    k    sJ 	 d d d            n# 1 swxY w Y   |	                                rJ t           j        t          k    sJ d S )N
_temp_pathr   r   configc                      t          j        d          t                    k    sJ t          j                    5 } | cxk    rt          j        d          k    sn J 	 d d d            d S # 1 swxY w Y   d S Nr   r   )r   r   strr   )dorig_config_dirtemp_astropy_configs    r   	test_funcz'test_set_temp_config.<locals>.test_func.   s    #Y7773?R;S;SSSSS "$$ 	TSSSS5+?+S+S+SSSSSSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T   %A00A47A4Tdelete)
r   r   r   setattrr   r   r   mkdirr"   exists)tmp_pathmonkeypatchtemp_config_dirr&   r$   r%   s       @@r   test_set_temp_configr0   #   s   !Z////-|TBBB*I>>>O 8++_22444)I5 ?++T T T T T ,+T IKKK 
	t	<	<	< T T#Y7773?R;S;SSSSSST T T T T T T T T T T T T T T %%'''''!Z//////s   .)C$$C(+C(c                    |                     t          j        dd            t          j        d          | dz  x}                                 |dz  t          j        |          fd            } |             t          j        |d          5  t          j        d          t                    k    sJ 	 d d d            n# 1 swxY w Y   |                                rJ d S )Nr   r   r   cachec                      t          j        d          t                    k    sJ t          j                    5 } | cxk    rt          j        d          k    sn J 	 d d d            d S # 1 swxY w Y   d S r!   )r   r   r"   set_temp_cache)r#   orig_cache_dirtemp_astropy_caches    r   r&   z&test_set_temp_cache.<locals>.test_funcI   s    "I666#>P:Q:QQQQQ !## 	RqQQQQ%*=y*Q*Q*QQQQQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rr'   Tr(   )r*   r   r4   r   r+   r"   r,   )r-   r.   temp_cache_dirr&   r5   r6   s       @@r   test_set_temp_cacher8   A   sk   ,lDAAA()<<<N'))^00222')3 .))R R R R R *)R IKKK 
	nT	:	:	: R R"I666#>P:Q:QQQQQQR R R R R R R R R R R R R R R $$&&&&&&&s   )CCCc                 N   t          j                    }| dz  x}                    d           t          j        t
                    5  t          j        |          5  	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |t          j                    k    sJ dS )z!Test for regression of  bug #9704aznot a good cache
N)r   r   
write_textpytestraisesOSErrorr4   )r-   tr:   s      r   'test_set_temp_cache_resets_on_exceptionr@   Z   s   A
S.Q$$%9:::	w		  !5a!8!8                               #%%%%%%%%s6   BA*B*A.	.B1A.	2BBBc                     ddl m} m}  | d          }|j                            d          sJ  | d          }|j        dk    sJ |j        dk    sJ |j        j                            d          sJ  | dd	          }t          j	        
                    |j                                      t          j                  }d
|v sd|v sJ |d         dk    sJ d t          j        d<    | d          }t          j	        
                    |j                                      t          j                  }d
|v sd|v sJ |d         dk    sJ d t          j        d<    | dd	          }t          j	        
                    |j                                      t          j                  }d|v sd|v sJ |d         dk    sJ d t          j        d<    | dd	          }t          j	        
                    |j        j                                      t          j                  }d|v sd|v sJ |d         dk    sJ d t          j        d<    |d           d S )Nr   )
get_configreload_configr   astropy.cfgzastropy.config   r   r   r   z.astropyztestpkg.cfgz.testpkgztestpkg.somemodule)astropy.config.configurationrB   rC   filenameendswithdepthnameparentospathnormpathsplitsepr   r   )rB   rC   apycfgcfgsectestcfgpartstestcfg_secs          r   test_config_filerW   c   s   FFFFFFFFZ	""F?##M22222Z())F<1;(""""=!**=99999 jY777GGW-..44RV<<E)u"4"4"4"49%%%%(,M9% j##GGW-..44RV<<E)u"4"4"4"49%%%%(,M9% jY777GGW-..44RV<<E)u"4"4"4"49%%%%(,M9% *1IFFFKG[/899??GGE)u"4"4"4"49%%%%(,M9%M)r   c                 r    d| v sJ d| v sJ d| v sJ d| v sJ d| v sJ d| v sJ d| v sJ d| v sJ d	| v sJ 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 = Falser   confs    r   check_configr\      s    %----$#t++++%%%%W[_____$,,,,>$FFFF%------r   c                 <   ddl m} t          j                    } |d|           |                                }| dz  } |d|           t          |          5 }|                                }d d d            n# 1 swxY w Y   ||fD ]}t          |           d S )Nr   generate_configr   rD   )rG   r_   ioStringIOgetvalueopenreadr\   )r-   r_   outr[   outfilefpconf2cs           r   test_generate_configrj      s    <<<<<<
+--COIs###<<>>D&GOIw'''	g "		               E]  Q s   A;;A?A?c                 d   t          |           5  ddlm}  |d           ddd           n# 1 swxY w Y   t          j                            | dz  dz            sJ t          | dz  dz            5 }|                                }ddd           n# 1 swxY w Y   t          |           dS )z:Test that generate_config works with the default filename.r   r^   r   NrD   )	r   rG   r_   rM   rN   r,   rc   rd   r\   )r-   r_   rg   r[   s       r   test_generate_config2rl      s<    
	"	" # #@@@@@@	"""# # # # # # # # # # # # # # #
 7>>(Y.>?????	h"]2	3	3 rwwyy               s   .225BBBc                    t          |           5  t          d           d d d            n# 1 swxY w Y   d|j        d         j        v sJ t          j                            | dz  dz            sJ t          | dz  dz            5 }|                                }d d d            n# 1 swxY w Y   t          |           |
                                 |                    dd          }t          | dz  dz  d          5 }|                    |           d d d            n# 1 swxY w Y   t          |           5  t          d           d d d            n# 1 swxY w Y   d	|j        d         j        v sJ |
                                 t          |           5  t          dd
           d d d            n# 1 swxY w Y   d|j        d         j        v sJ d S )Nr   z4The configuration file has been successfully writtenr   rD   rY   zunicode_output = Truew)modezGThe configuration file already exists and seems to have been customizedT)	overwrite)r   r   recordsmessagerM   rN   r,   rc   rd   r\   r   replacewrite)r-   caplogrg   r[   s       r   test_create_config_filerv      s5   		"	" & &9%%%& & & & & & & & & & & & & & &
 	?>!$	% 	% 	% 	% 7>>(Y.>?????	h"]2	3	3 rwwyy              
LLNNN <<24KLLD	h"]2	=	=	= 
               
	"	" & &9%%%& & & & & & & & & & & & & & &
 	R>!$	% 	% 	% 	% LLNNN		"	" 6 6955556 6 6 6 6 6 6 6 6 6 6 6 6 6 6
 	?>!$	% 	% 	% 	% 	% 	%sT   ,00	B**B.1B.D''D+.D+EE!$E!!F??GGc                     ddl m} m}m}  | dd           G fdd|          } |            }j        dk    sJ              dk    sJ j        dk    sJ |j        dk    sJ  |j                  }|d         dk    sJ d	_                            d
                        d
k    sJ d_                            d                        dk    sJ d |D             }|dgk    sJ d |                                D             }|dgk    sJ d |	                                D             }|gk    sJ d |
                                D             }|dfgk    sJ d S )Nr   
ConfigItemConfigNamespacerB   "   zthis is a Descriptionc                       e Zd Z ZdS )test_configitem.<locals>.ConfN)__name__
__module____qualname__tstnm)cis   r   Confr}      s        r   r   z!astropy.config.tests.test_configsr   zupdated Descr    c                     g | ]}|S r   r   .0xs     r   
<listcomp>z#test_configitem.<locals>.<listcomp>  s    Aar   c                     g | ]}|S r   r   r   s     r   r   z#test_configitem.<locals>.<listcomp>      %%%Aa%%%r   c                     g | ]}|S r   r   r   s     r   r   z#test_configitem.<locals>.<listcomp>      '''Aa'''r   c                     g | ]}|S r   r   r   s     r   r   z#test_configitem.<locals>.<listcomp>
      &&&Aa&&&r   )rG   ry   rz   rB   moduledescriptionr   setkeysvaluesitems)ry   rz   rB   r   r[   secresultr   s          @r   test_configitemr      s   TTTTTTTTTT	B/	0	0B          466D9;;;;;2442::::>44444:
*RY

Cw<2$BNFF2JJJ2442:::: -BNFF2JJJ2442:::: FgY%%%%%FgY'''''FbT>>>>&&&&&Fwm_$$$$$$r   c                    	 ddl m} m}  | d           | d           | d           | d          	 G 	fdd|          } |            }t          |j        t
                    sJ t          |j        t                    sJ t          |j        t                    sJ t          |j
        t                    sJ t          j        t                    5  d|_        d d d            n# 1 swxY w Y   d	|_        t          j        t                    5  d
|_        d d d            n# 1 swxY w Y   t          j        t                    5  d|_
        d d d            n# 1 swxY w Y   d |D             }|g dk    sJ d |                                D             }||k    sJ d |                                D             }|	gk    sJ d |                                D             }|dfdfdfd	fgk    sJ d S )Nr   ry   rz   r{   gfffff&A@Tastringc                        e Zd Z ZZZZdS )#test_configitem_types.<locals>.ConfN)r~   r   r   tstnm1tstnm2tstnm3tstnm4)ci1ci2ci3ci4s   r   r   r     s#        r   r      fasdg)\@c                     g | ]}|S r   r   r   s     r   r   z)test_configitem_types.<locals>.<listcomp>,  s    """!"""r   )r   r   r   r   c                     g | ]}|S r   r   r   s     r   r   z)test_configitem_types.<locals>.<listcomp>.  r   r   c                     g | ]}|S r   r   r   s     r   r   z)test_configitem_types.<locals>.<listcomp>0  r   r   c                     g | ]}|S r   r   r   s     r   r   z)test_configitem_types.<locals>.<listcomp>2  r   r   r   r   r   r   )rG   ry   rz   
isinstancer   intr   floatr   boolr   r"   r<   r=   	TypeErrorr   r   r   )
ry   rz   r   r[   
item_namesr   r   r   r   r   s
         @@@@r   test_configitem_typesr     s>   HHHHHHHH
*R..C
*T

C
*T

C
*Y

C             466Ddk3'''''dk5)))))dk4(((((dk3'''''	y	!	!                DK	y	!	!                	y	!	!                 #"T"""JAAAAAAA%%%%%FZ'''''Fc3S)))))&&&&&F	3	3	3	3	      s6   C33C7:C7D22D69D6E**E.1E.c                   
 ddl m}m}m}  |g d          
 G 
fdd|          } |
j                  }t           
            t                    sJ  
            dk    sJ |d         dk    sJ 
                    d           t          j	        t                    5  
                    d	           d d d            n# 1 swxY w Y   |d         dk    sJ |}|j        |ur|j        }|j        |u| d
z  }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          |d          5 }d |                                D             }	d d d            n# 1 swxY w Y   d|	v sJ d S )Nr   rx   )op1op2op3c                       e Zd Z ZdS )%test_configitem_options.<locals>.ConfN)r~   r   r   tstnmocios   r   r   r   @  s        r   r   r   r   r   op5rD   wbzutf-8encodingc                 6    g | ]}|                                 S r   )stripr   s     r   r   z+test_configitem_options.<locals>.<listcomp>V  s     111Qqwwyy111r   ztstnmo = op2)rG   ry   rz   rB   r   r   r"   r   r<   r=   r   rL   rc   rt   	readlines)r-   ry   rz   rB   r   r   rR   ffdlnsr   s             @r   test_configitem_optionsr   ;  s   TTTTTTTTTT
****
+
+C          *SZ
 
 CcceeS!!!!!355E>>>>x=E!!!!GGENNN	y	!	!                x=E!!!! F
-v
%
% -v
%
%= A	a "R              	a'	"	"	" 2b11",,..1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 S      s6   $CC
C
D11D58D5E88E<?E<c                    |                      dd           |                     d           |                     t          j        dd           d
d}|                     t          d|           |                     t
          di            t          j        t                    5  t          j	        d	           ddd           n# 1 swxY w Y   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_HOMEfoor   Nc                     t           r
   )r>   )dirnmlinktopkgnames      r   osraiserz0test_config_noastropy_fallback.<locals>.osraiserh  s    r   _find_or_create_root_dirr   r   r   r
   )setenvdelenvr*   r   r   r   r<   r=   r>   r   r   )r.   r   s     r   test_config_noastropy_fallbackr   [  s!    (%000()))-|TBBB    98DDD z2666	w		 1 1i00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 s   "CCCc                  (   ddl mm}   G fdd|           } |            }|j        dk    sJ |                    dd          5  |j        dk    sJ 	 d d d            n# 1 swxY w Y   |j        dk    sJ d|_        |j        dk    sJ |                    dd	          5  |j        d	k    sJ 	 d d d            n# 1 swxY w Y   	 |                    dd
          5  t
          # 1 swxY w Y   n# t
          $ r Y nw xY w|j        dk    sJ d S )Nr   r   c                   (    e Zd Z  dd          ZdS )%test_configitem_setters.<locals>.Conf*   zthis is another DescriptionN)r~   r   r   tstnm12)ry   s   r   r   r   |  s!        *R!>??r   r   r   r   -   +   .   /   )rG   ry   rz   r   set_temp	Exception)rz   r   r[   ry   s      @r   test_configitem_settersr   y  s4   HHHHHHHH@ @ @ @ @ @ @ @ @ @ 466D<2	y"	%	% " "|r!!!!!" " " " " " " " " " " " " " "<2DL<2	y"	%	% " "|r!!!!!" " " " " " " " " " " " " " "]]9b)) 	 	O	 	 	 	 	 	 	 	 	    <2sT   A""A&)A&$B??CCC5 !C))C--C5 0C-1C5 5
DDc                  x    ddl m}  d } |d          } | |          sJ  |d          } | |          rJ d S )Nr   )is_unedited_config_filec                     t          t          |           d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nzlatin-1r   )rc   r   rd   )fnr   s     r   get_contentz+test_empty_config_file.<locals>.get_content  s    '++i@@@ 	B7799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A  AAzdata/empty.cfgzdata/not_empty.cfg)rG   r   )r   r   contents      r   test_empty_config_filer     sy    DDDDDD   k*++G""7+++++k.//G&&w///////r   c                        e Zd Zd Zd Zd ZdS )TestAliasReadc                 8    t          d          t          _        d S )Nzdata/alias.cfg)r   r   _override_config_file)selfs    r   setup_classzTestAliasRead.setup_class  s    .CDT.U.U+++r   c                     ddl m} t          j        t          d          5 }|                                 |j        dk    sJ 	 d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nr   rZ   zQConfig parameter 'name_resolve_timeout' in section \[coordinates.name_resolve\].*)matchr   rE   )astropy.utils.datar[   r<   warnsr   reloadremote_timeoutlen)r   r[   rn   s      r   test_alias_readzTestAliasRead.test_alias_read  s    ++++++\%.
 
 
 	- KKMMM&",,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 1vv{{{{{{s   "AAAc                 R    ddl m} d t          _        |                                 d S )Nr   rZ   )r   r[   r   r   r   )r   r[   s     r   teardown_classzTestAliasRead.teardown_class  s-    ++++++.2+r   N)r~   r   r   r   r   r   r   r   r   r   r     sD        V V V      r   r   c                      ddl m} m}m}  | d           G fdd|          } |j                  }t                       t                    sJ              dk    sJ |d         dk    sJ d S )Nr   rx   u!   ასტრონომიისc                       e Zd Z ZdS )%test_configitem_unicode.<locals>.ConfN)r~   r   r   
tstunicoder   s   r   r   r     s        


r   r   r   )rG   ry   rz   rB   r   r   r"   )ry   rz   rB   r   r   r   s        @r   test_configitem_unicoder     s    TTTTTTTTTT
*8
9
9C          *SZ
 
 CcceeS!!!!!35577777| CCCCCCCr   c                     ddl m}  t          d          t          _        	 t          j        t                    5 }|                                  | j	         d d d            n# 1 swxY w Y   t          |          dk    sJ 	 d t          _        |                                  d S # d t          _        |                                  w xY w)Nr   rZ   zdata/deprecated.cfgrE   )r   r[   r   r   r   r<   r   r   r   	max_linesr   )r[   rn   s     r   test_warning_move_to_top_levelr     s     *?@U*V*VM'\344 	KKMMMNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 1vv{{{{{.2+ /3+s.   B% A"B% "A&&B% )A&*B% %"Cc                  0   t           j                            t                    } t           j                            t           j                            | ddd                    }t           j                                        }|g}|                    d          r# |j	        |                    d                     t           j
                            |          |d<   dD ]	}||v r||= 
t          j        t          j        ddg|          }|dk    sJ d S )Nz..
PYTHONPATH)HOMEr   z-czimport astropy)envr   )rM   rN   dirname__file__abspathjoinenvironcopygetappendpathsep
subprocess
check_callsys
executable)	test_pathastropy_pathr  r   valretcodes         r   test_no_homer    s    
 ))I7??27<<	4t#L#LMML
*//

CNE
ww| ,SWW\**+++
..C*  #::C#S^T;K$LRUVVVGa<<<<<<r   )$r`   rM   r  r  r<   astropy.configr   r   r   r   r   r   astropy.utils.exceptionsr   r   r   r   r   r0   r8   r@   rW   r\   rj   rl   rv   r   r   r   r   r   r   r   r   r   r  r   r   r   <module>r     s   
			 				     



  T T T T T T T T T T T T 4 4 4 4 4 4 > > > > > >
. . .
. . .
@ @ @0 0 0<' ' '2& & &( ( (V
. 
. 
.      ( ( (V%% %% %%P* * *Z! ! !@  <  :0 0 0       0D D D  "    r   