
    IR-el                     6   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 d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZmZ d d
lm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-d Z.d Z/d Z0d Z1d  Z2d! Z3d" Z4d# Z5d$ Z6d% Z7d& Z8d' Z9d( Z:d) Z;d* Z<d+ Z=d, Z>d- Z?d. Z@d/ ZAd0 ZBd1 ZCd2 ZDd3 ZEd4 ZFd5 ZGd6 ZHd7 ZId8 ZJd9 ZKd: ZLd; ZMd< ZNd= ZOd> ZPd? ZQd@ ZRdA ZSdB ZTdC ZUdD ZVdE ZWdF ZXdG ZYdH ZZdI Z[dJ Z\dK Z]dL Z^dM Z_dN Z`dO ZadP ZbdQ ZcdR ZddS ZedT ZfdU ZgdV ZhdW ZidX ZjdY ZkdZ Zld[ Zmd\ Znd] Zod^ Zpd_ Zqd` Zrda Zsdb Ztdc Zudd Zvde Zwdf Zxdg Zydh Zzdi Z{dj Z|dk Z}dl Z~dm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zg d{Zej                            d|e          d}             Zg d~Zej                            d|e          d             Zej                            d|g d          d             ZdS )    N)assert_array_almost_equalassert_array_equal)Version)unitsfits)UnitsWarning)get_pkg_data_contentsget_pkg_data_filenameget_pkg_data_fileobj)_set_locale)_wcswcs)FITSFixedWarningc                      t          j                    } | j        dk    sJ d| _        | j        dk    sJ | `| j        dk    sJ d S )N X)r   Wcsprmaltws    =lib/python3.11/site-packages/astropy/wcs/tests/test_wcsprm.pytest_altr      sJ    A5C<<<<AE5C<<<<	5C<<<<<<    c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )N$r   r   pytestraises
ValueErrorr   r   s    r   test_alt_invalid1r!   $   s    A	z	"	"                      AA	Ac                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )Nz  r   r   s    r   test_alt_invalid2r$   *   s    A	z	"	"                   r"   c                  Z    t          j                    } t          | j        ddg           d S Nr   )r   r   r   
axis_typesr   s    r   test_axis_typesr(   0   s)    Aq|aV,,,,,r   c                     t          j                    } ddgddgg| _        | j        j        t          k    sJ |                                 du sJ t          | j        ddgddgg           | `|                                 du sJ d S N   r   TF)r   r   cddtypefloathas_cdr   r   s    r   test_cdr0   5   s    AFQFAD4:88::qtq!fq!f-...	88::r   c                      t          j                    } |                                 du sJ t          j        t
                    5  | j         d d d            d S # 1 swxY w Y   d S NF)r   r   r/   r   r   AttributeErrorr,   r   s    r   test_cd_missingr4   ?   s    A88::	~	&	&  	                    AA!Ac                     t          j                    } ddgddgg| _        |                                 du sJ | `|                                 du sJ t	          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r*   )r   r   r,   r/   r   r   r3   r   s    r   test_cd_missing2r7   F   s    AFQFAD88::	88::	~	&	&  	                 s   ,BBBc                      t          j                    } t          j        t                    5  g d| _        d d d            d S # 1 swxY w Y   d S )N)r+   r   r   r+   )r   r   r   r   r    r,   r   s    r   test_cd_invalidr9   P   s    A	z	"	"  ||                    
AAAc                  T    t          j                    } |                                  d S N)r   r   cdfixr   s    r   
test_cdfixr>   V   s    AGGIIIIIr   c                      t          j                    } t          | j        ddg           ddg| _        t          | j        ddg           d S )Nr+   *   6   )r   r   r   cdeltr   s    r   
test_cdeltrC   [   sJ    AqwA'''2hAGqwR)))))r   c                      t          j                    } t          j        t                    5  | `d d d            d S # 1 swxY w Y   d S r<   )r   r   r   r   	TypeErrorrB   r   s    r   test_cdelt_deleterF   b   s    A	y	!	!  G                 s   =AAc                      t          j                    } | j        du sJ d| _        | j        du sJ d| _        | j        du sJ d S )NFfooTr   )r   r   
cel_offsetr   s    r   test_cel_offsetrJ   h   sZ    A<5    AL<4AL<5      r   c                  `    t          j                    } |                                 dk    sJ d S N)r   r   celfixr   s    r   test_celfixrO   q   s.     	A88::r   c                      t          j                    } | j        D ]
}|dk    sJ t          | j                  ddgk    sJ ddg| _        t          | j                  ddgk    sJ d S )N s   foobarrH   )r   r   cnamelist)r   xs     r   
test_cnamerV   x   sx    AW  Bwwwww==RH$$$$uoAG==UEN******r   c                      t          j                    } t          j        t                    5  ddg| _        d d d            d S # 1 swxY w Y   d S )Nr@   rA   )r   r   r   r   rE   rS   r   s    r   test_cname_invalidrX      s    A	y	!	!  r(                 r:   c                     t          j                    } | j        j        t          j        k    sJ t          | j        ddg           ddg| _        t          | j        ddg           d| j        d<   t          | j        ddg           t          j        t                    5  g d| _        d d d            d S # 1 swxY w Y   d S Nr   r@   rA   )r+         )
r   r   colaxr-   npintcr   r   r   r    r   s    r   
test_colaxr`      s    A7=BG####qwA'''2hAGqwR)))AGAJqwB(((	z	"	"  ))                 s   !
B88B<?B<c                     t          j                    } | j        dk    sJ d| _        | j        dk    sJ 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   t          j        t                    5  | `d d d            d S # 1 swxY w Y   d S )Nr   r@   l    l    )r   r   colnumr   r   OverflowErrorrE   r   s    r   test_colnumrd      s   A8q====AH8r>>>>	}	%	% * *)* * * * * * * * * * * * * * * 
}	%	%                 
y	!	!  H                 s6   A""A&)A&BB!B>CCCc                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )NrH   )r   r   r   r   rE   rb   r   s    r   test_colnum_invalidrf      s    A	y	!	!                   r"   c                  H   t          j                    } | j        j        t          k    sJ t          j        t          j        | j                            sJ d| j        d<   t          j        | j        d                   sJ | j        d         dk    sJ | j        | _        d S Nr   r+   )r   r   crderr-   r.   r^   allisnanr   s    r   
test_crderrl          A7=E!!!!6"(17##$$$$$AGAJ8AGAJ71:????gAGGGr   c                      t          j                    } ddg| _        | j        j        t          k    sJ |                                 du sJ t          | j        ddg           | `|                                 du sJ d S r*   )r   r   crotar-   r.   	has_crotar   r   s    r   
test_crotarq      s    A!fAG7=E!!!!;;==D    qwA'''	;;==E!!!!!!r   c                      t          j                    } |                                 du sJ t          j        t
                    5  | j         d d d            d S # 1 swxY w Y   d S r2   )r   r   rp   r   r   r3   ro   r   s    r   test_crota_missingrs      s    A;;==E!!!!	~	&	&  	                 r5   c                     t          j                    } ddg| _        |                                 du sJ | `|                                 du sJ t	          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r*   )r   r   ro   rp   r   r   r3   r   s    r   test_crota_missing2ru      s    A!fAG;;==D    	;;==E!!!!	~	&	&  	                 s   (A==BBc                     t          j                    } | j        j        t          k    sJ t          | j        ddg           ddg| _        t          | j        ddg           d| j        d<   t          | j        ddg           t          j        t                    5  g d| _        d d d            d S # 1 swxY w Y   d S rZ   )	r   r   crpixr-   r.   r   r   r   r    r   s    r   
test_crpixrx      s    A7=E!!!!qwA'''2hAGqwR)))AGAJqwB(((	z	"	"  ))                 s   
B33B7:B7c                  
   t          j                    } | j        j        t          k    sJ t          | j        ddg           ddg| _        t          | j        ddg           d| j        d<   t          | j        ddg           d S )Nr   r@   rA   )r   r   crvalr-   r.   r   r   s    r   
test_crvalr{      s    A7=E!!!!qwA'''2hAGqwR)))AGAJqwB(((((r   c                  H   t          j                    } | j        j        t          k    sJ t          j        t          j        | j                            sJ d| j        d<   t          j        | j        d                   sJ | j        d         dk    sJ | j        | _        d S rh   )r   r   csyerr-   r.   r^   rj   rk   r   s    r   
test_csyerr~      rm   r   c                  $   t          j                    } t          | j                  ddgk    sJ ddg| _        t	          | j        ddg           | j        dk    sJ | j        dk    sJ | j        dk    sJ | j	        d	k    sJ t          | j                  d
dgk    sJ ddg| _        t	          | j        ddg           t          | j                  ddgk    sJ | j        dk    sJ | j        dk    sJ | j        dk    sJ | j	        d	k    sJ d S )NrQ      RA---TANDEC--TANi  i  r+   r   DECRARA---TANrH   rR   rM   )
r   r   rT   ctyper   r'   latlnglattyplngtypr   s    r   
test_ctyper      s6   A==RH$$$$J'AGq|dD\2225A::::5A::::8u8t==Z44444enAGq|aV,,,==UEN****5B;;;;5B;;;;8u8tr   c                      t          j                    } t          | j                  ddgk    sJ ddg| _        t	          | j        dk              sJ d S )NrQ   s	   RA-	--TANz	DEC-
-TANz["RA-	--TAN", "DEC-
-TAN"])r   r   rT   r   reprr   s    r   test_ctype_reprr     sX    A==RH$$$$l+AG99:::::::r   c                  `   t          j                    } t          | j                  ddgk    sJ dD ]{}t	          j        t                    5  | j        |          d d d            n# 1 swxY w Y   t	          j        t                    5  d| j        |<   d d d            n# 1 swxY w Y   |d S )NrQ   r[   FOO)r   r   rT   r   r   r   
IndexErrorr   idxs     r   test_ctype_index_errorr     s$   A==RH$$$$ ! !]:&& 	 	GCLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	! 	! AGCL	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!! !s$   A''A+	.A+	B""B&	)B&	c                     t          j                    } t          | j                  ddgk    sJ t	          j        t                    5  d| j        d<   d d d            n# 1 swxY w Y   t	          j        t                    5  d| j        d<   d d d            n# 1 swxY w Y   t	          j        t                    5  ddg| _        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   t	          j        t                    5  g d| _        d d d            n# 1 swxY w Y   t	          j        t                    5  ddg| _        d d d            d S # 1 swxY w Y   d S )	NrQ   dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr   Ta)r   bcr   dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)r   r   rT   r   r   r   r    rE   r   s    r   test_ctype_invalid_errorr     s   A==RH$$$$	z	"	"  
              	y	!	!  
              	y	!	!  (              	y	!	!                	z	"	" " "!//" " " " " " " " " " " " " " "	z	"	" % %)$% % % % % % % % % % % % % % % % % %sl   	A  A$'A$BB"B?
CCC9DDD1
EEE+
FF	Fc                      t          j                    } | j        dk    sJ d| _        t          j        t
                    5  d| _        d d d            d S # 1 swxY w Y   d S )NrM   r   )r   r   cubefacer   r   rc   r   s    r   test_cubefacer   &  s    A:AJ	}	%	%  
                 s   AAAc                  F   t          j                    } t          | j                  t	          j        d          t	          j        d          gk    sJ t          j        dg| _        | j        d         t          j        k    sJ | j        d         t          j        k    sJ d S )NrQ   kmr   r+   )r   r   rT   cunituUnitmr   r   s    r   
test_cunitr   .  s    A==QVBZZ44444sDkAG71:71:r   c                      t          j                    } t          j        t          j        d          5 }d| j        d<   d d d            n# 1 swxY w Y   t          |          dk    sJ d S )NrH   matchr   r+   )r   r   r   warnsr   r	   r   lenr   r   s     r   test_cunit_invalidr   6  s    A	anE	2	2	2 e
              u::??????s   AAAc                  L   t          j                    } t          j        t          j                  5 }ddg| _        d d d            n# 1 swxY w Y   t          |          dk    sJ dt          |d         j	                  v sJ dt          |d         j	                  v sJ d S )NrH   rR   r[   r   r+   )
r   r   r   r   r   r	   r   r   strmessager   s     r   test_cunit_invalid2r   =  s    A	an	%	% !%.! ! ! ! ! ! ! ! ! ! ! ! ! ! !u::????Ca())))))Ca())))))))s   
AAAc                      t          j                    } t          j        | j         j        d<   | j         j        d         t          j        k    sJ t          | j         j                  dk    sJ d S )Nr   z['erg', ''])r   WCSr   ergr   r   r   s    r   	test_unitr   F  sZ    		AUAEKN5;q>QU""""------r   c                      t          j                    } t          j        t                    5  t          j        dd          }d d d            n# 1 swxY w Y   || j         j        d<   d S )NFOOBARwarn)parse_strictr   )r   r   r   r   r	   r   r   r   )r   myunits     r   
test_unit2r   N  s    		A	l	#	# 7 7v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7AEKNNNs   AAAc                     t          j                    } dD ]}t          j        t                    5  | j         j        |          d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | j         j        |<   d d d            n# 1 swxY w Y   t          j        t                    5  t          j        t          j        t          j        g| j         _        d d d            d S # 1 swxY w Y   d S )Nr   )	r   r   r   r   r   r   r   r   r    r   s     r   
test_unit3r   U  s   		A # #]:&& 	 	EK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	# 	# sAEK	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#	z	"	" & &sACo& & & & & & & & & & & & & & & & & &s5   AA	A	4BB	!B	?.C::C>C>c                  T    t          j                    } |                                  d S r<   )r   r   unitfixr   s    r   test_unitfixr   `  s    AIIKKKKKr   c                  ,   t          j                    } |                                 dk    sJ |                     ddg          dk    sJ t          j        t
                    5  |                     g d           d d d            d S # 1 swxY w Y   d S )NrM   r   r+   r   r+   r[   )r   r   cylfixr   r   r    r   s    r   test_cylfixr   e  s     	A88::88QFr!!!!	z	"	"  	                 s   $B		BBc                  F    t          j                    } | j        dk    sJ d S NrQ   )r   r   dateavgr   s    r   test_dateavgr   q       A9??????r   c                  F    t          j                    } | j        dk    sJ d S r   )r   r   dateobsr   s    r   test_dateobsr   w  r   r   c                      t          j                    } d| _        |                                 dk    sJ | j        dk    sJ | j        dk    sJ d S )N31/12/99r   
1999-12-31    *@)r   r   r   datfixmjdobsr   s    r   test_datfixr   }  sU    AAI88::????9$$$$8wr   c                  6   t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ t          j        t                    5  d | _        d d d            d S # 1 swxY w Y   d S r&   )r   r   r^   rk   equinoxr   r   rE   r   s    r   test_equinoxr     s    A8AIAI9>>>>		8AI	y	!	!  	                 s   9BBBc                     t          j                    } dddddddd}t          j         j        }t	          |          t	          d          k    r|d= t	          |          t	          d          k    rd| _        t	          d          t	          |          cxk    rt	          d          k     rn nd	|d
<   |                                 |k    sJ d S )N	No changer=   r   obsfixr   spcfixr   rN   5r   7.1z
1858-11-17z7.4z7.6Successr   )r   r   r   __version__r   datereffixr   fix_refversions      r   test_fixr     s    A G h"Gw73<<''Hw75>>)) 	u~~))::::GENN:::::%5577gr   c                     t          j                    } d| _        dddddddd}t          j         j        }t          |          t          d          k    r|d= d|d<   t          |          t          d	          k    rd
|d         z   |d<   n.t          |          t          d          k    rd|d         z   |d<   |                                 |k    sJ | j        dk    sJ | j        dk    sJ d S )Nr   r   z[Set MJD-OBS to 51543.000000 from DATE-OBS.
Changed DATE-OBS from '31/12/99' to '1999-12-31'r   r   r   z"Changed '31/12/99' to '1999-12-31'r   7.3)Set DATEREF to '1858-11-17' from MJDREF.
r   +Set DATE-REF to '1858-11-17' from MJD-REF.
r   r   )r   r   r   r   r   r   r   r   r   s      r   	test_fix2r     s   AAI?  G h"Gw73<<''H@w75>>))878;LL 	 
		WU^^	+	+:WX=NN 	 5577g9$$$$8wr   c                     t          j                    } d| _        dddddddd}t          j         j        }t          |          t          d          k    r|d= d|d<   t          |          t          d	          k    rd
|d         z   |d<   n.t          |          t          d          k    rd|d         z   |d<   |                                 |k    sJ | j        dk    sJ t          j        | j	                  sJ d S )Nz31/12/F9r   z"Invalid DATE-OBS format '31/12/F9'r   r   r   z0Invalid parameter value: invalid date '31/12/F9'r   r   r   r   r   )
r   r   r   r   r   r   r   r^   rk   r   r   s      r   	test_fix3r     s   AAI6 G h"Gw73<<''HNw75>>))878;LL 	 
		WU^^	+	+:WX=NN 	 5577g9
""""8AHr   c                      t          j                    } t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r    r   r   s    r   	test_fix4r     s    A	z	"	"  	c


                 s   AAAc                      t          j                    } t          j        t                    5  |                     g d           d d d            d S # 1 swxY w Y   d S )Nr   naxisr   r   s    r   	test_fix5r     s    A	z	"	"  	III                 s   AAAc                  z    t          j                    } t          |                                           dk    sJ d S r&   )r   r   r   get_psr   s    r   test_get_psr     2    Aqxxzz??ar   c                  z    t          j                    } t          |                                           dk    sJ d S r&   )r   r   r   get_pvr   s    r   test_get_pvr     r   r   c                      t          j                    } t          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r<   )r   r   r   r   AssertionErrorimgpix_matrixr   s    r   test_imgpix_matrixr         A	~	&	&  	                 r"   c                      t          j                    } t          j        t                    5  d | _        d d d            d S # 1 swxY w Y   d S r<   )r   r   r   r   r3   r   r   s    r   test_imgpix_matrix2r        A	~	&	&                   r"   c                  X    t          j                    } |                                 sJ d S r<   )r   r   is_unityr   s    r   test_isunityr    s'    A::<<r   c                  F    t          j                    } | j        dk    sJ d S rL   )r   r   r   r   s    r   test_latr         A5B;;;;;;r   c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S r&   )r   r   r   r   r3   r   r   s    r   test_lat_setr
        A	~	&	&                   r"   c                      t          j                    } | j        dk    sJ d| _        | j        dk    sJ | `| j        dk    sJ d S )Ng     V@     F@)r   r   latpoler   s    r   test_latpoler  !  sX    A9AI9		9r   c                  F    t          j                    } | j        dk    sJ d S Nz    )r   r   r   r   s    r   test_lattypr  *  &    A8vr   c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S r&   )r   r   r   r   r3   r   r   s    r   test_lattyp_setr  /      A	~	&	&                   r"   c                  F    t          j                    } | j        dk    sJ d S rL   )r   r   r   r   s    r   test_lngr  5  r  r   c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S r&   )r   r   r   r   r3   r   r   s    r   test_lng_setr  :  r  r"   c                  F    t          j                    } | j        dk    sJ d S r  )r   r   r   r   s    r   test_lngtypr  @  r  r   c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S r&   )r   r   r   r   r3   r   r   s    r   test_lngtyp_setr  E  r  r"   c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S Nr  )r   r   r^   rk   lonpoler   s    r   test_lonpoler"  K  b    A8AIAI9		8AIr   c                      t          j                    } ddg| _        t          j        t           j                  5  |                     ddddgddddgd	d
gd           d d d            d S # 1 swxY w Y   d S )Nr   r   r+      i     r   r[   rA       )r   r   r   r   r   InvalidCoordinateErrormixr   s    r   test_mixr*  T  s    AJ'AG	t2	3	3 ; ;	aS#J1q!fr2h:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   #A++A/2A/c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S r   )r   r   r^   rk   mjdavgr   s    r   test_mjdavgr-  [  b    A8AHAH8t	8AHr   c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S r   )r   r   r^   rk   r   r   s    r   test_mjdobsr0  d  r.  r   c                  n    t          j                    } | j        dk    sJ d| _        | j        dk    sJ d S NrQ   rH   )r   r   namer   s    r   	test_namer4  m  s6    A6R<<<<AF6U??????r   c                  F    t          j                    } | j        dk    sJ d S )Nr[   )r   r   r   r   s    r   
test_naxisr6  t  s     A7a<<<<<<r   c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )N   )r   r   r   r   r3   r   r   s    r   test_naxis_setr9  y  s    A	~	&	&                   r"   c                  $   t          j                    } t          j        t          j        | j                            sJ g d| _        t          | j        g d           | `t          j        t          j        | j                            sJ d S )N)r+   r[   r\   r8  r&     )r   r   r^   rj   rk   obsgeor   r   s    r   test_obsgeor=    s    A6"(18$$%%%%%!!!AHqx!3!3!3444	6"(18$$%%%%%%%r   c                  R   t          j                    } |                                 sJ t          | j        ddgddgg           ddgddgg| _        |                                 rJ | `|                                 sJ t          | j        ddgddgg           | j        | _        d S Nr+   r   )r   r   has_pcr   pcr,   r   s    r   test_pcrB    s    A88::qtq!fq!f-...FQFADxxzz	88::qtq!fq!f-...4ADDDr   c                      t          j                    } ddgddgg| _        |                                 rJ t	          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r?  )r   r   r,   r@  r   r   r3   rA  r   s    r   test_pc_missingrD    s    AFQFADxxzz	~	&	&  	                 s   A%%A),A)c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S N      E@)r   r   r^   rk   phi0r   s    r   	test_phi0rI    s^    A8AFAF6T>>>>	8AFr   c                      t          j                    } t          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r<   )r   r   r   r   r   piximg_matrixr   s    r   test_piximg_matrixrL    r   r"   c                      t          j                    } t          j        t                    5  d | _        d d d            d S # 1 swxY w Y   d S r<   )r   r   r   r   r3   rK  r   s    r   test_piximg_matrix2rN    r  r"   c                  t    t          j                    } t          t          |           t                    sJ d S r<   )r   r   
isinstancer   r   s    r   test_print_contentsrQ    s1     	Ac!ffc"""""""r   c                  n    t          j                    } | j        dk    sJ d| _        | j        dk    sJ d S r2  )r   r   radesysr   s    r   test_radesysrT    <    A9????AI9r   c                      t          j                    } | j        dk    sJ t          j        | _        t          j        | j                  sJ | `d S N        )r   r   restfrqr^   nanrk   r   s    r   test_restfrqr[    J    A9AI8AI				r   c                      t          j                    } | j        dk    sJ t          j        | _        t          j        | j                  sJ | `d S rW  )r   r   restwavr^   rZ  rk   r   s    r   test_restwavr_    r\  r   c                      t          j                    } ddg}|                     |           |                                 |k    sJ d S )Nr   r   param1)r+   r+   param2)r   r   set_psr   r   datas     r   test_set_psrg    sF    A./DHHTNNN88::r   c                  ^    t          j                    } |                     dgdz             d S )Nra     )r   r   rd  r   s    r   test_set_ps_reallocrj    s.    AHH"$%%%%%r   c                      t          j                    } ddg}|                     |           |                                 |k    sJ d S )Nr   r   rG  )r+   r+   g      K@)r   r   set_pvr   re  s     r   test_set_pvrn    sE    A,'DHHTNNN88::r   c                  ^    t          j                    } |                     dgdz             d S )Nrl  ri  )r   r   rm  r   s    r   test_set_pv_reallocrp    s,    AHHl^b !!!!!r   c                      t          dd          } t          j        |           }|                                dk    sJ d S )Ndata/spectra/orion-velo-1.hdrbinaryencodingrM   )r
   r   r   r   headerr   s     r   test_spcfixrx    sE     ##BXVVVFFA88::r   c                  F    t          j                    } | j        dk    sJ d S rL   )r   r   specr   s    r   	test_specr{    s     A6R<<<<<<r   c                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S r&   )r   r   r   r   r3   rz  r   s    r   test_spec_setr}    s    A	~	&	&                   r"   c                  n    t          j                    } | j        dk    sJ d| _        | j        dk    sJ d S r2  )r   r   specsysr   s    r   test_specsysr    rU  r   c                      d S r<    r  r   r   	test_sptrr    s    Dr   c                  n    t          j                    } | j        dk    sJ d| _        | j        dk    sJ d S r2  )r   r   ssysobsr   s    r   test_ssysobsr    rU  r   c                  n    t          j                    } | j        dk    sJ d| _        | j        dk    sJ d S r2  )r   r   ssyssrcr   s    r   test_ssyssrcr    rU  r   c                  `    t          j                    } t          | j                  dk    sJ d S r&   )r   r   r   tabr   s    r   test_tabr    s&    Aqu::??????r   c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S rF  )r   r   r^   rk   theta0r   s    r   test_theta0r    r.  r   c                  ~    t          j                    } t          |                                 t                    sJ d S r<   )r   r   rP  	to_headerr   r   s    r   test_toheaderr  #  s1    AakkmmS)))))))r   c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S rF  )r   r   r^   rk   velanglr   s    r   test_velanglr  (  r#  r   c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S rF  )r   r   r^   rk   velosysr   s    r   test_velosysr  1  r#  r   c                      t          j                    } | j        dk    sJ d| _        | j        dk    sJ | `| j        dk    sJ d S )NrX  r@   rG  )r   r   velrefr   s    r   test_velrefr  :  sN    A8s????AH8t	8s??????r   c                      t          j                    } t          j        | j                  sJ d| _        | j        dk    sJ | `t          j        | j                  sJ d S rF  )r   r   r^   rk   zsourcer   s    r   test_zsourcer  C  r#  r   c                      t          dd          } t          j        |           }|j        j        dk    sJ |                                j        dk    sJ |                                j        dk    sJ d S )Ndata/3d_cd.hdrrs  rt  )r\   r\   )r\   )r
   r   r   r,   shapeget_pc	get_cdeltrv  s     r   
test_cd_3dr  L  sw    "#3hGGGFFA4:88::v%%%%;;==$&&&&&&r   c                      t          dd          } t          j        |           }|                                }	 d|d<   t	                      # t
          t          f$ r Y d S w xY w)Nr  rs  rt  r@   )r   r   )r
   r   r   r  r   RuntimeErrorr    )rw  r   rA  s      r   test_get_pcr  T  sv    "#3hGGGFFA	
B4  *%   s   A A#"A#c                      t          j                    } ddgddgg| _        t          j        t           j                  5  |                                  d d d            d S # 1 swxY w Y   d S r&   )r   r   rA  r   r   SingularMatrixErrorsetr   s    r   test_detailed_errr  `  s    AFQFAD	t/	0	0  	                 s   A!!A%(A%c                  T   ddl m}  t          dd          5 } | j        |          }t	          j        t                    5  t          j        |d         j	                  }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        j
        d         dk    sJ d S )Nr   r   zdata/header_newlines.fitsrs  rt  zRA---TAN-SIP)
astropy.ior   r   openr   r   r   r   r   rw  r   )r   	test_filehdulistr   s       r   test_header_parser  g  s/   	#h
 
 
 +	$)I&&\*++ 	+ 	+
)**A	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+	+ + + + + + + + + + + + + + + 5;q>^++++++s5   *B A."B.A2	2B5A2	6BB	B	c                     	 t          d          5  t          dd          } t          j        t                    5  t          j        |           }t          j        d|	                                          J 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S # t          j        $ r t          j        d           Y d S w xY w)Nfr_FRzdata/locale.hdrrs  rt  z[0-9]+,[0-9]*zOCan't set to 'fr_FR' locale, perhaps because it is not installed on this system)r   r
   r   r   r   r   r   researchr  localeErrorxfailrv  s     r   test_localer  s  s   

!! 	I 	I*+<xPPPF.// I IK''y!++--@@HHHHI I I I I I I I I I I I I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 < 
 
 
	
 	
 	
 	
 	
 	

sW   B, +B>B;BB	BB	BB, B##B, &B#'B, ,#CCc                      t          j                    } t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )Nu   ‰)r   r   r   r   UnicodeEncodeErrorr   r   s    r   test_unicoder    s    A	)	*	*                   r"   c                      t           j                            t          d                    } t	          j        |           }|                    t          j        g           t          j	                     dS )zIssue #1960zdata/sub-segfault.hdrN)
r   Headerfromtextfiler   r   r   subWCSSUB_CELESTIALgccollectrv  s     r   test_sub_segfaultr    sU    [%%&;<S&T&TUUFAEE3
 !!!JLLLLLr   c                  V    t          j                    } |                     d           d S r2   )r   r   bounds_checkr   s    r   test_bounds_checkr    s%    ANN5r   c                      t          j                    } t          j        t          d          5  |                     d           ddd           dS # 1 swxY w Y   dS )zIssue #1587z)axes must None, a sequence or an integer$r   latitudeN)r   r   r   r   rE   r  r   s    r   test_wcs_sub_error_messager    s    A	y(S	T	T	T  	j                 s   AAAc                      t          j                    } |                     dg           t          j                    } |                     dg           dS )zIssue #3356r  s   latitudeN)r   r   r  r   s    r   test_wcs_subr    sF    AEE:,AEE;-r   c                     t          dd          } t          j        |           }t          j        |           }||k    sJ d|_        ||k    sJ |                    |          rJ |                    |t          j                  sJ t          j        |           }t          j        |           }t          j        t                    5  t          j
        d          |j        d<   t          j        d          |j        d<   |                    |          rJ |                    |d          sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr  rs  rt  r@   gq?r   gư>)	tolerance)r
   r   r   r   compareWCSCOMPARE_ANCILLARYr   r   RuntimeWarningr^   float32rB   float64)rw  r   w2s      r   test_comparer    sz   "#3hGGGFFA	V		B7777AI7777yy}}99R233333FA	V		B	n	%	% - -Z <==
j!=>>99R==   yyty,,,,,,- - - - - - - - - - - - - - - - - -s   A)EE	Ec                      t          j                    } ddg| _        |                                  | j        dk    sJ d S )Nr   r   ICRS)r   r   r   r  rS  r   s    r   test_radesys_defaultsr    s?    A:&AGEEGGG9r   c                  ,   t          j        d          } | j        dk    sJ t          j        | j                  sJ t          j        d          } dD ]E}|| _        |                                  | j        dk    sJ t          j        | j                  sJ FdD ]u}t          j        d          } || _        |                                  | j        dk    sJ t          j        d          } || _        d| _        |                                  | j        dk    sJ t          j        d          } || _        d	| _        |                                  | j        d
k    sJ t          j        d          } || _        d| _        |                                  | j        dk    sJ t          j        d          } || _        |                                  t          j        | j                  sJ t          j        d          } || _        d| _        |                                  t          j        | j                  sJ t          j        d          } || _        d
| _        |                                  | j        dk    sJ t          j        d          } || _        d| _        |                                  | j        dk    sJ t          j        d          } || _        d| _        |                                  | j        dk    sJ wd S )Nr[   r   rQ   ))GLON-CARGLAT-CAR)zSLON-SINzSLAT-SIN))r   r   )ELON-TANELAT-TAN)r   r   )r  r  r  i  FK4i  FK5rH   g     @@i  zFK4-NO-E)r   r   rS  r^   rk   r   r   r  )r   r   s     r   test_radesys_defaults_fullr    s   " 	!A9????8AI 	!AE # #	yBx	"""""" :! :! Ka   	yF""""Ka   		yE!!!!Ka   		yE!!!!Ka   		yE!!!! Ka   	x	"""""Ka   		x	"""""Ka   		yF""""Ka   		yD    Ka   		yD     u:! :!r   c                      t          j        ddgddgddgddgddgddgddgddgddgddgg
t                    } t          j                    }dd	g|j        _        d
dg|j        _        ddg|j        _        |                    | d          }t          j        ddgddgddgddgddgddgddgddgddgddgg
t                    }t          ||           |
                    |d          }| d d dfxx         dz  cc<   t          ||            d S )NgLg      gRm5{?g      пrX  g      ?g      ?r  r  gPN{gPN{?g5^IR@gMR@r+   ǧd@g:Jdÿg}ER@g3pB@gM\@gG&b@r   g     v@)r^   arrayr.   r   r   r   rB   rw   wcs_world2pixr   wcs_pix2world)worldr   rU   expectedr  s        r   test_iterationr    s{   H$% #$#	
 	 E  			Az*AEK"N3AEK7#AEK	q!!AxO,O,M*M*M*M*M*M*M*M*	
 	 H  a***	
A		B	!!!Q$KKK5KKKb%(((((r   c                     t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        d           d d d            n# 1 swxY w Y   t          dd	          } t          j        t
                    5  t          j        | d
           d d d            n# 1 swxY w Y   t          j        t
                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            d S # 1 swxY w Y   d S )NA)keyselr[   )colsel@   r   rr  rs  rt  r   )relaxr\   )key)r   r   rE   r   r   r    r
   KeyError)rw  s    r   test_invalid_argsr  M  s~   	y	!	!    3                              
z	"	"  1               
z	"	"  1               
z	"	"  "               ##BXVVVF	z	"	" ) )F%(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
z	"	" % %F!$$$$% % % % % % % % % % % % % % % 
x	 	  % %F$$$$% % % % % % % % % % % % % % % % % %s{   <A A  BB	B&CCC,DDDE&&E*-E*
F--F14F1G55G9<G9c                     t          j                    } | j        dk    sJ d| _        | j        dk    sJ d| _        dddddddd}t          t          j         j                  t          d          k    rd|d	         z   |d	<   n=t          t          j         j                  t          d
          k    rd|d	         z   |d	<   |                                 |k    sJ d S )NrQ   z
2001-02-11r   r   z"Invalid DATE-BEG format '31/12/99'r   r   r   r   r   r   )r   r   datebegr   r   r   r   )r   r   s     r   test_datebegr  h  s    A9????AI9$$$$AI6 G sx#$$66878;LL 	 
%	&	&'%..	8	8:WX=NN 	 5577gr   )timesystrefpostrefdirplephemtimeunitr   r   dateendr  c                 ,   t          j                    }t          ||           dk    sJ t          || d           t          ||           dk    sJ t	          j        t                    5  t          || d           d d d            d S # 1 swxY w Y   d S )NrQ   rH   r@   )r   r   getattrsetattrr   r   rE   r  r   s     r   test_char_keysr    s    A1c??b    AsE1c??e####	y	!	!  3                 s   *B		BB)r   mjdbegmjdendjepochbepochtstarttstopxposuretimsyertimrdertimedeltimepixrtimeoffstelapser  c                    t          j                    }t          j        t	          ||                     sJ t          || d           t	          ||           dk    sJ t          ||            t          j        t	          ||                     sJ t          j        t                    5  t          || d           d d d            d S # 1 swxY w Y   d S )NrG  rH   )
r   r   r^   rk   r  r  delattrr   r   rE   r  s     r   test_num_keysr    s   A8GAsOO$$$$$AsD1c??d""""AsOOO8GAsOO$$$$$	y	!	!  3                 s   ,CCC)czphscperimjdrefc                    t          j                    }t          ||           }| dk    rDt          t           j                  t          d          k    rt          j        |ddg          sJ n(t          j        t          j        |                    sJ |j	        t          k    sJ t          || ddg           t          t          ||           ddg           t          j        t                    5  t          || ddg           d d d            n# 1 swxY w Y   t          j        t                    5  t          || d           d d d            d S # 1 swxY w Y   d S )Nr  r   r   g      ?g       @rH   rR   )r   r   r  r   r   r^   allcloserj   rk   r-   r.   r  r   r   r   r    )r  r   attrs      r   test_array_keysr    s   A1c??D
h74#344FF{4!Q((((((vbhtnn%%%%%:AsS#Jwq#c
333	z	"	" ( (3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	z	"	"  3                 s$   4DDD8EEE)r  r  r  numpyr^   r   numpy.testingr   r   packaging.versionr   astropyr   r   r  r   astropy.units.corer	   astropy.utils.datar
   r   r   astropy.utils.miscr   astropy.wcsr   r   astropy.wcs.wcsr   r   r!   r$   r(   r0   r4   r7   r9   r>   rC   rF   rJ   rO   rV   rX   r`   rd   rf   rl   rq   rs   ru   rx   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r  r"  r*  r-  r0  r4  r6  r9  r=  rB  rD  rI  rL  rN  rQ  rT  r[  r_  rg  rj  rn  rp  rx  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  	char_keysmarkparametrizer  num_keysr  r  r  r   r   <module>r#     s[   
			  				      G G G G G G G G % % % % % %             + + + + + +         
 + * * * * * ! ! ! ! ! ! ! ! , , , , , ,
      - - -
          
* * *  ! ! !  + + +  
 
 
       " " "    
 
 
) ) )    &; ; ;! ! !% % %"      * * *. . .  & & &  
	 	 	      	 	 	  2     F  @                    
  
      
    
    
    ; ; ;        
  & & &	 	 	        # # #        & & &
  " " "
    
    	 	 	
        * * *
        ' ' '	 	 	  	, 	, 	,
 
 
      
    - - -0  W! W! W!t-) -) -)`% % %6  8	 	 		 	**  +*  & ))  *)  < < <==  >=  r   