ó
ßÈ[c           @   sz  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l	 Z	 d  d l
 Z d d l m Z d d l m Z m Z m Z m Z d d l m Z m Z d d l m Z d d	 l m 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   Z$ d   Z% d   Z& d   Z' d e f d     YZ( d e f d     YZ) d S(   iÿÿÿÿ(   t   divisiont   with_statementN(   t   StringIOt   BytesIOi   (   t   six(   t   ut   iterkeyst
   itervaluest	   iteritems(   t   zipt   range(   t   fits(   t   VerifyWarning(   t   catch_warningst   ignore_warningsi   (   t   FitsTestCasei   (   t   _pad(   t   _pad_length(   t   encode_asciic          C   sd   t  j d d	 g  }  t j |   } d |  d <d | k s@ t  d | d <|  d d k s` t  d S(
   sQ   Make sure that operations on a shallow copy do not alter the original.
    #4990.t   ai   t   bid   t   ci    N(   R   i   (   R   i   (   R   t   Headert   copyt   AssertionError(   t   original_headert   copied_header(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_shallow_copy   s    

c          C   sk   t  j d g  }  t  j |  d t } d |  d <| d d k sG t  d | d <|  d d k sg t  d S(   sV   Make sure that creating a Header from another Header makes a copy if
    copy is True.R   i
   R   i   i    N(   R   i
   (   R   R   t   TrueR   (   R   t
   new_header(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_init_with_header,   s    

c          C   sg   i d d 6d d 6d d 6d d 6d	 d
 6}  t  j |   } x( |  D]  } |  | | | k s? t  q? Wd  S(   Ni   R   i   R   i   R   i   t   di   t   e(   R   R   R   (   t   dict1t   h1t   i(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_init_with_dict9   s    )c             sx   g  t  d  D] \ }  } | |  f ^ q  t j   } t j |    t    f d   t     D  st t  d  S(   Nt   abcdefghijklmnopqrstuvwxyzc         3   s-   |  ]# \ } }   |  | d  k Vq d S(   i   N(    (   t   .0R#   t   val(   R"   t   list1(    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pys	   <genexpr>G   s    (   t	   enumeratet   collectionst   OrderedDictR   R   t   allR   (   t   jR#   R!   (    (   R"   R(   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_init_with_ordereddict@   s    +t   TestHeaderFunctionsc           B   sO  e  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   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'   Z) d(   Z* d)   Z+ d*   Z, d+   Z- d,   Z. d-   Z/ d.   Z0 d/   Z1 d0   Z2 d1   Z3 d2   Z4 d3   Z5 d4   Z6 d5   Z7 d6   Z8 d7   Z9 d8   Z: d9   Z; d:   Z< d;   Z= d<   Z> d=   Z? d>   Z@ d?   ZA d@   ZB dA   ZC dB   ZD dC   ZE dD   ZF dE   ZG dF   ZH dG   ZI dH   ZJ dI   ZK dJ   ZL dK   ZM dL   ZN dM   ZO dN   ZP dO   ZQ dP   ZR dQ   ZS dR   ZT dS   ZU dT   ZV dU   ZW dV   ZX dW   ZY dX   ZZ dY   Z[ dZ   Z\ d[   Z] d\   Z^ d]   Z_ d^   Z` d_   Za d`   Zb da   Zc db   Zd dc   Ze dd   Zf de   Zg eh ji jj df  dg    Zk dh   Zl di   Zm dj   Zn dk   Zo dl   Zp dm   Zq dn   Zr do   Zs dp   Zt dq   Zu dr   Zv ds   Zw dt   Zx du   Zy dv   Zz dw   Z{ dx   Z| RS(y   s   Test Header and Card objects.c         C   s   t  j d	 d
 g  } | j d d  d | k s7 t  d | k sI t  | d d k s_ t  | d d k su t  | j d d k s t  d S(   s*   Test renaming keyword with rename_keyword.t   At   Bt   Ct   Dt   Et   Fi    N(   R0   R1   R2   (   R3   R4   R5   (   R   R   t   rename_keywordR   t   comments(   t   selft   header(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_rename_keywordM   s    c         C   s%   t  j   } d | j k s! t  d S(   s3   Test Card constructor with default argument values.t    N(   R   t   Cardt   keywordR   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt"   test_card_constructor_default_argsW   s    c         C   sd   t  j d d  } t |  t d  k s0 t  t  j d d  } t |  t d  k s` t  d S(   s'   Test Card constructor with string valuet   abcs   <8 chs   ABC     = '<8 ch   't   nullstrR;   s   NULLSTR = ''N(   R   R<   t   strR   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_string_value_card]   s    c         C   s[   t  j d t  } t |  t d  k s0 t  t  j j d  } | j t k sW t  d S(   s(   Test Card constructor with boolean valueR?   s   ABC     =                    Ts   ABC     = FN(	   R   R<   R   RA   R   R   t
   fromstringt   valuet   False(   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_boolean_value_carde   s    c         C   s4   t  j d d  } t |  t d  k s0 t  d S(   s-   Test Card constructor with long integer valuet   long_intløÿÿÿ tNxwb	ÊÆB s,   LONG_INT= -467374636747637647347374734737437N(   R   R<   RA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_long_integer_value_cardn   s    c         C   sg   t  j d d  } t |  t d  k rc t |  t d  k rc t |  t d  k sc t  n  d S(   s/   Test Card constructor with floating point valuet   floatnumgQæ·Æs   FLOATNUM= -4.6737463674763E+32s   FLOATNUM= -4.6737463674763E+032N(   R   R<   RA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_floating_point_value_cardt   s    c         C   sy   t  j d d  } t d  } t d  } t d  } t |  | k ru t |  | k ru t |  | k su t  n  d S(   s(   Test Card constructor with complex valueR?   gÿÛmšÚÒ8Ry        ¥Öõ{ü<s6   ABC     = (1.23453774378878E+88, 6.32476736476374E-15)s6   ABC     = (1.2345377437887E+088, 6.3247673647637E-015)NyÿÛmšÚÒ8R¥Öõ{ü<(   R   R<   R   RA   R   (   R8   R   t   f1t   f2t   f3(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_complex_value_card}   s    		$c      	   C   s   t    t t j d d d d  } t |  d k s; t  t j d d d d  } t |  d	 j d d  k sy t  Wd
 QXd
 S(   s.   Test that over-long cards truncate the commentR?   i	   t   abcdei   sP   ABC     =                    9 / abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabR   iD   t   abcdefgs   ABC     = '{}'N(   R   R   R<   RA   R   t   format(   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt$   test_card_image_constructed_too_long   s    
	c         C   s@   t  j t t j d i d	 d 6 t  j t t j d g  d  d S(
   s=   Test that Card constructor raises exceptions on bad argumentsR?   i   i   RD   t   keyt   commentN(   R?   (   i   i   (   t   pytestt   raisest
   ValueErrorR   R<   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt/   test_constructor_filter_illegal_data_structures   s     c      	   C   s:   t    + t j d  t j t t j d d  Wd QXd S(   s<   Test that long Card keywords are allowed, but with a warningt   errort	   abcdefghit   longN(   R   t   warningst   simplefilterRU   RV   t   UserWarningR   R<   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_keyword_too_long   s    
c         C   s[   t     } t j d d  } Wd QXt |  d k s< t  | j t d  k sW t  d S(   s{   
        Test that Card constructor allows illegal characters in the keyword,
        but creates a HIERARCH card.
        s   abc+i	   Ni   s$   HIERARCH abc+ =                    9(   R   R   R<   t   lenR   t   imageR   (   R8   t   wR   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_illegal_characters_in_key¢   s    
c      	   C   sð  t  j d d d d d d g  } | j d	  t |  d
 k sF t  | j d	 j d	 k sb t  | d d d d d	 g k s t  | j d d d t |  d
 k s¯ t  | j d j d k sË t  | d d d d d d	 g k sð t  t  j d d d d d d g  } | j d	  t |  d k s6t  | j d
 j d	 k sRt  | d d d d d d d	 g k szt  | j d d d t |  d k s¥t  | j d j d k sÁt  | d d d d d d d d	 g k sìt  d  S(   NR0   R1   R2   t   HISTORYi   i   i   R;   i   i   i    t   afteri   i   (   R0   R1   R2   (   Rd   i   (   Rd   i   (   Rd   i   (   R;   R;   R;   (   R;   R;   R;   (   R0   R1   R2   (   R;   i   (   R;   i   (   R;   i   (   R;   R;   R;   (   R;   R;   R;   (   R   R   t   add_historyR`   R   t   cardsRD   t	   add_blank(   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_add_commentary±   s*    	"%(c         C   s  d t  f d     Y} t j   } | j i d d 6 | j | d d g   t | j    d d d h k sv t  | j d d
 k s t  | j d d d d  t | j    d d d d d h k sÒ t  t | j    d d d	 d d h k sÿ t  d  S(   Nt
   FakeHeaderc           B   s   e  Z d    Z d   Z RS(   c         S   s   g  |  D] } | d ^ q S(   Ni    (    (   R8   t   l(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   keysÒ   s    c            s   t    f d   |  D  S(   Nc         3   s)   |  ] } | d    k r | d Vq d S(   i    i   N(    (   R&   Rk   (   RS   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pys	   <genexpr>Ö   s    (   t   next(   R8   RS   (    (   RS   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   __getitem__Õ   s    (   t   __name__t
   __module__Rl   Rn   (    (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRj   Ñ   s   	t   BARt   BAZt   FOOR0   i   R1   i   RT   t   NAXIS1id   t   NAXIS2(   Rq   Rr   (   R0   i   (   R1   i   RT   (	   t   listR   R   t   updatet   setRl   R   R7   t   values(   R8   Rj   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_updateÐ   s    '-c      	   C   s  t  j |  j d   } | d j j i d d 6 | d j d d k sP t  | d j j d d k sp t  t j t	    | d j j i d d 6 Wd  QX| j
 |  j d   | j   t  j |  j d  d	 d
 } d | d j j d <| j   t  j |  j d   } | d j j d d k s5t  | d j j d d d t | d j j d  j   d k s{t  | j   d  S(   Ns   arange.fitsi    Rq   Rr   Rs   t   EXTRAt   FOO2s	   test.fitst   modeRw   t   QUXRe   iÿÿÿÿs	   COMMENT 0(   Rq   Rr   (   Rq   Rr   R{   (   R   t   opent   dataR9   Rw   R   R7   RU   RV   RW   t   writetot   tempt   closet   add_commentRA   Rg   t   strip(   R8   t   hdul(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_commentâ   s      !

 ,c         C   s{   d } t  j d |  } t |  t d |  k s: t  d } t  j d | d  } t |  t d |  k sw t  d  S(   Ns2   A commentary card's value has no quotes around it.Rd   s   HISTORY s!   A commentary card has no comment.t   COMMENTRT   s   COMMENT (   R   R<   RA   R   R   (   R8   R'   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_commentary_cardsù   s    "c         C   s@   t  j j d  } | j d k s' t  | j d k s< t  d  S(   NsL   COMMENT card has no comments. / text after slash is still part of the value.sD   card has no comments. / text after slash is still part of the value.R;   (   R   R<   RC   RD   R   RT   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt*   test_commentary_card_created_by_fromstring  s    		c         C   s4   t  j j d  } t |  t d  k s0 t  d  S(   Ns   HISTORY  (1, 2)(   R   R<   RC   RA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt3   test_commentary_card_will_not_parse_numerical_value  s    c         C   s4   t  j j d  } t |  t d  k s0 t  d  S(   Ns   HISTORY =   (1, 2)(   R   R<   RC   RA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_equal_sign_after_column8  s    c         C   sv   t  j d d  } t |  t d  k s0 t  t  j j t |   } | j d k s] t  | j d k sr t  d  S(   NR;   s          / EXPOSURE INFORMATIONs%                  / EXPOSURE INFORMATION(   R   R<   RA   R   R   RC   R=   RD   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_blank_keyword  s
    c         C   s:   t  j d t  j j  } t |  t d  k s6 t  d  S(   Nt   undefs	   UNDEF   =(   R   R<   t   cardt	   UNDEFINEDRA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_specify_undefined_value  s    c         C   s4   t  j j d  } t |  t d  k s0 t  d  S(   Ns   ABC     = (8, 9)(   R   R<   RC   RA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt&   test_complex_number_using_string_input"  s    c         C   sI   t  j j d  } | j d k s' t  t |  t d  k sE t  d  S(   Ns   abc     = +  2.1   e + 12g  ~Bs   ABC     =             +2.1E+12(   R   R<   RC   RD   R   RA   R   (   R8   t   capsysR   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt#   test_fixable_non_standard_fits_card'  s    c         C   s.   t  j j d  } t |  d k s* t  d  S(   NsG   no_quote=  this card's value has no quotes / let's also try the commentsP   NO_QUOTE= 'this card''s value has no quotes' / let's also try the comment       (   R   R<   RC   RA   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_fixable_non_fsc-  s    		c         C   s4   t  j j d  } t |  t d  k s0 t  d  S(   Ns   ABC     =    s	   ABC     =(   R   R<   RC   RA   R   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt'   test_undefined_value_using_string_input7  s    c         C   s^   t  j j d  } | j d k s' t  | j d k s< t  t |  t d  k sZ t  d  S(   Ns   XYZ= 100t   XYZid   s   XYZ     =                  100(   R   R<   RC   R=   R   RD   RA   R   (   R8   R   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_mislocated_equal_sign<  s    c         C   sd   t  j j d  } t |  t d  k s0 t  t  j j d  } t |  t d  k s` t  d  S(   Ns   HISTO       =   (1, 2)s      HISTORY          (1, 2)(   R   R<   RC   RA   R   R   (   R8   R   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_equal_only_up_to_column_10C  s    c         C   s   t  j j d  } t    } | j   Wd  QXd } d } t |  d k sR t  | t | d j  k sq t  | t | d j  k s t  d  S(   Ns   ABC= a6s<   Card 'ABC' is not FITS standard (equal sign not at column 8)s;   Card 'ABC' is not FITS standard (invalid value string: 'a6'i   i   i   (	   R   R<   RC   R   t   verifyR`   R   RA   t   message(   R8   R   Rb   t	   err_text1t	   err_text2(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_verify_invalid_equal_signR  s    c         C   s   t  j j d  } t    } | j d  Wd  QXd } t |  d k sO t  | t | d j  k sn t  t |  t	 d  k s t  d  S(   Ns   ABC= a6t   fixs+   Fixed 'ABC' card to meet the FITS standard.i   i   s   ABC     = 'a6      '(
   R   R<   RC   R   R   R`   R   RA   R   R   (   R8   R   Rb   t   fix_text(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_fix_invalid_equal_sign_  s    c         C   s9   t  j d d d d d  } t |  d k s5 t  d  S(   NR?   s   long string value i
   s   long comment sà  ABC     = 'long string value long string value long string value long string &' CONTINUE  'value long string value long string value long string value long &'  CONTINUE  'string value long string value long string value &'                  CONTINUE  '&' / long comment long comment long comment long comment long        CONTINUE  '&' / comment long comment long comment long comment long comment     CONTINUE  '' / long comment                                                     (   R   R<   RA   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_long_string_valueh  s    	c         C   s   t  j   } d d | d <t  j   } t   3 } t d  d | d <t |  d k s^ t  Wd QXt |  t |  k s t  d S(   så   Regression test for
        https://github.com/spacetelescope/PyFITS/issues/1

        So long as a unicode string can be converted to ASCII it should have no
        different behavior in this regard from a byte string.
        RP   i   t   TESTi    N(   R   R   R   R   R`   R   RA   (   R8   R"   t   h2Rb   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_long_unicode_strings  s    c         C   s   t  j   } d | d <d d d d f | d <d | d <t |  j   t t  j d d d   d	 d
 d d d d t t  j d d d   g k s t  d S(   så   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/193

        Ensure that the __repr__() for cards represented with CONTINUE cards is
        split across multiple lines (broken at each *physical* card).
        s   Regular values   Regular commentt   TEST1s   long string value i
   s   long comment t   TEST2t   TEST3sP   TEST2   = 'long string value long string value long string value long string &' sP   CONTINUE  'value long string value long string value long string value long &'  sP   CONTINUE  'string value long string value long string value &'                  sP   CONTINUE  '&' / long comment long comment long comment long comment long        sP   CONTINUE  '&' / comment long comment long comment long comment long comment     sP   CONTINUE  '' / long comment                                                     N(   s   Regular values   Regular comment(   s   Regular values   Regular comment(   R   R   t   reprt
   splitlinesRA   R<   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_long_string_repr  s    

c         C   s©   d d } t  j   } | | d <t |  d k s8 t  d j | d  | j   k s] t  | | d <| | d <| d | d k s t  | d | d k s¥ t  d S(	   s	  Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/194

        Test that a blank keyword ('') can be assigned a too-long value that is
        continued across multiple cards with blank keywords, just like COMMENT
        and HISTORY cards.
        s   long string value i
   R;   i   t    R   Rd   N(   R   R   R`   R   t   joint   rstrip(   R8   RD   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_blank_keyword_long_value  s    

%

c         C   s¡   t  j d d d d d  } t  j   } | j j |  | j |  j d   t  j |  j d   } | d j j d } | j	   t
 |  d k s t  d  S(   NR?   s   long string value i
   s   long comment s   test_new.fitsi    sà  ABC     = 'long string value long string value long string value long string &' CONTINUE  'value long string value long string value long string value long &'  CONTINUE  'string value long string value long string value &'                  CONTINUE  '&' / long comment long comment long comment long comment long        CONTINUE  '&' / comment long comment long comment long comment long comment     CONTINUE  '' / long comment                                                     (   R   R<   t
   PrimaryHDUR9   t   appendR   R   R   Rg   R   RA   R   (   R8   R   t   hduR   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_long_string_from_file°  s    
	c         C   s9   t  j d d d d d  } t |  d k s5 t  d  S(   NR?   t   longstringvaluei
   t   longcomments  ABC     = 'longstringvaluelongstringvaluelongstringvaluelongstringvaluelongstr&'CONTINUE  'ingvaluelongstringvaluelongstringvaluelongstringvaluelongstringvalu&'CONTINUE  'elongstringvalue&'                                                   CONTINUE  '&' / longcommentlongcommentlongcommentlongcommentlongcommentlongcommeCONTINUE  '' / ntlongcommentlongcommentlongcommentlongcomment                   (   R   R<   RA   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt!   test_word_in_long_string_too_longÁ  s    	c         C   sH   t  j j t d  t d  t d   } t |  d k sD t  d  S(   Ns;   abc     = 'longstring''s testing  &  ' / comments in line 1sL   continue  'continue with long string but without the ampersand at the end' /sN   continue  'continue must have string value (with quotes)' / comments with ''. sð   ABC     = 'longstring''s testing  continue with long string but without the &'  CONTINUE  'ampersand at the endcontinue must have string value (with quotes)&'  CONTINUE  '' / comments in line 1 comments with ''.                             (   R   R<   RC   R   RA   R   (   R8   R   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt%   test_long_string_value_via_fromstringË  s
    		c         C   so   t  j j t d  t d  t d   } | j d k sA t  | j d k sV t  | j d k sk t  d S(   sW   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/117
        sF   EXPR    = '/grp/hst/cdbs//grid/pickles/dat_uvk/pickles_uk_10.fits * &'s)   CONTINUE  '5.87359e-12 * MWAvg(Av=0.12)&'s    CONTINUE  '&' / pysyn expressiont   EXPRsU   /grp/hst/cdbs//grid/pickles/dat_uvk/pickles_uk_10.fits * 5.87359e-12 * MWAvg(Av=0.12)s   pysyn expressionN(   R   R<   RC   R   R=   R   RD   RT   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt'   test_continue_card_with_equals_in_valueÙ  s    	c         C   sF   t  j   } d d | d <t |  j   d t d  k sB t  d S(   sT   
        Regression test for https://github.com/astropy/astropy/issues/3282
        R0   iE   t   SVALUEiÿÿÿÿs   CONTINUE  'AA'N(   R   R   R©   Rª   R   R   (   R8   t   h(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt(   test_final_continue_card_lacks_ampersandé  s    c         C   s9   t  j d d d d d  } t |  d k s5 t  d S(   sT   
        Regression test for https://github.com/astropy/astropy/issues/3282
        R£   s
   long valuei
   s   long comment &s  TEST    = 'long valuelong valuelong valuelong valuelong valuelong valuelong &'  CONTINUE  'valuelong valuelong valuelong value&'                                CONTINUE  '&' / long comment &long comment &long comment &long comment &long    CONTINUE  '&' / comment &long comment &long comment &long comment &long comment CONTINUE  '' / &long comment &                                                  N(   R   R<   RA   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt;   test_final_continue_card_ampersand_removal_on_long_commentsò  s    	c         C   sÑ   t     } t j d d  } Wd  QXt |  d k s< t  d t | d j  k s[ t  t |  d k ss t  t j d d  } t |  t d	  k s£ t  t j d
 d  } t |  d k sÍ t  d  S(   Ns   ESO INS SLIT2 Y1FRMLs/   ENC=OFFSET+RESOL*acos((WID-(MAX+MIN))/(MAX-MIN)i   s   HIERARCH card will be createdi    sP   HIERARCH ESO INS SLIT2 Y1FRML= 'ENC=OFFSET+RESOL*acos((WID-(MAX+MIN))/(MAX-MIN)'s   hierarch abcdefghii
   s   HIERARCH abcdefghi = 10s   HIERARCH ESO INS SLIT2 Y1FRML(   R   R   R<   R`   R   RA   R   R   (   R8   Rb   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_hierarch_card_creationÿ  s    					c         C   sU   t  j j d  } | j d k s' t  | j d k s< t  | j d k sQ t  d S(   sV   Regression test for
        https://github.com/spacetelescope/PyFITS/issues/5
        s$   HIERARCH key.META_4='calFileVersion's
   key.META_4t   calFileVersionR;   N(   R   R<   RC   R=   R   RD   RT   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt)   test_hierarch_with_abbrev_value_indicator  s    c         C   sŠ   t  j j d  } | j d k s' t  | j d k s< t  | j d k sQ t  t  j d d  } | j d k sx t  | j d k s t  | j d k s¢ t  d S(   sá   
        Regression test for
        https://github.com/spacetelescope/PyFITS/issues/6

        Make sure any leading or trailing whitespace around HIERARCH
        keywords is stripped from the actual keyword value.
        s*   HIERARCH  key.META_4    = 'calFileVersion's
   key.META_4R¿   R;   s   HIERARCH  key.META_4N(   R   R<   RC   R=   R   RD   RT   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt    test_hierarch_keyword_whitespace  s    			c      	   C   s&  t  j d d d  } | j d  | j d k s7 t  | j d k sL t  | j d k sa t  t  j d t f d d d t d f d g  } t  j	 d |  } | j
 |  j d   t  j |  j d   R } | d
 j } t | j | j d   t | j | j d   k st  Wd QXd S(   së   Regression test for
        https://github.com/spacetelescope/PyFITS/issues/7

        Assures that HIERARCH keywords with lower-case characters and other
        normally invalid keyword characters are not considered invalid.
        s   HIERARCH WeirdCard.~!@#_^$%&s	   The values	   a commentt	   exceptions   WeirdCard.~!@#_^$%&t   simplet   BITPIXi   t   NAXISi    t   EXTENDs   May contain datasetss   HIERARCH key.META_0t   detRowR9   s	   test.fitss
   key.META_0N(   RÄ   i   (   RÅ   i    (   s   HIERARCH key.META_0RÇ   (   R   R<   R   R=   R   RD   RT   R   R   R°   R   R   R   R9   RA   Rg   t   index(   R8   R   R9   R²   R   t   header2(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_verify_mixed_case_hierarch2  s$    		c            sg   t  j     t j t   f d   d  y   d Wn, t k
 rb } | j d d k sc t  n Xd S(   s=   Test that accessing a non-existent keyword raises a KeyError.c            s     |  S(   N(    (   t   k(   R9   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   <lambda>U  s    RÅ   i    s   Keyword 'NAXIS' not found.N(   R   R   RU   RV   t   KeyErrort   argsR   (   R8   R    (    (   R9   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_missing_keywordQ  s    c         C   sT   t  j   } d | d <d | k s( t  | d d k s> t  d | k sP t  d  S(   Ni
   s   hierarch abcdefghiRZ   t	   ABCDEFGHI(   R   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_hierarch_card_lookup\  s
    
c         C   s!   t  j   } d | d <| d =d  S(   Ni
   s   hierarch abcdefghi(   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_hierarch_card_deletef  s    
c         C   s   t  j   } d | d <d | d <d | d <| j d d  | d =| j d d  | d =t | j    d d j   k s t  d  S(	   Ni
   RZ   t   abcdefghRP   i   t
   abcdefghij(   RÔ   i
   (   RÔ   i
   (   R   R   t   insertRv   Rl   t   upperR   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt    test_hierarch_card_insert_deletek  s    


c         C   s"  d } t  j   } t t  þ} | j i d d 6 t |  d k sM t  d | k s_ t  | d d k su t  | j i d d 6 t |  d k s¡ t  | d s· t d   | j i d d 6 t |  d k sã t  t |  d k sû t  | d st d   | j i d	 d
 6 t |  d k s=t  t |  d k sUt  | d skt d	   | j i d d 6 t |  d k st  t |  d k s¯t  | d sÅt d   | j i d d 6 t |  d k sñt  | t | d j  k st  | j i d d 6 t |  d k s<t  | d sRt d   | j i d d 6 t |  d k s~t  | d st d   | j i d	 d 6 t |  d k sÀt  | d sÖt d	   | j i d d 6 t |  d k st  | d st d   Wd QXd S(   s€   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/158

        Tests several additional use cases for working with HIERARCH cards.
        s   a HIERARCH card will be createdt   TESTAs   HIERARCH BLAH BLAHi    s	   BLAH BLAHt   TESTBt   TESTCi   t   TESTDs   HIERARCH blah blahs	   blah blaht   TESTEi   s   BLAH BLAH BLAHi   s   HIERARCH BLAH BLAH BLAHi   s   HIERARCH blah blah blahs   blah blah blahi   N(	   R   R   R   R   Rw   R`   R   RA   R   (   R8   t   msgR9   Rb   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_hierarch_create_and_updatev  sJ    c      	   C   sv  d } t  j   } t t  } | j i d d 6 t |  d k sM t  d | k s_ t  | d d k su t  | j i d d 6 t |  d k s¡ t  | d s· t d   | j i d d 6 t |  d k sã t  | d sù t d   | j i d	 d
 6 t |  d k s%t  t |  d k s=t  | d sSt d	   | j i d d 6 t |  d k st  t |  d k st  | d s­t d   Wd QXt  j   } t t  ¥} | j i d d 6 g  | D] } | j ^ qéGHt |  d k st  | t | d j	  k s4t  | j i d d 6 t |  d k s`t  | d svt d   | j i d d 6 t |  d k s¢t  | d sžt d   | j i d	 d
 6 t |  d k sät  t |  d k süt  | d st d	   | j i d d 6 t |  d k s>t  t |  d k sVt  | d slt d   Wd QXd S(   sD  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/158

        Tests several additional use cases for working with HIERARCH cards,
        specifically where the keyword is fewer than 8 characters, but contains
        invalid characters such that it can only be created as a HIERARCH card.
        s   a HIERARCH card will be createdRØ   s   HIERARCH BLA BLAi    s   BLA BLARÙ   RÚ   i   RÛ   s   HIERARCH bla blas   bla blaRÜ   i   Ni   (
   R   R   R   R   Rw   R`   R   t   categoryRA   R   (   R8   RÝ   R9   Rb   t   x(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt%   test_short_hierarch_create_and_update³  sR    	c            s/   t  j       f d   } t j t |  d  S(   Nc              s   d   d <d  S(   Nt   bart   bazt   quxRs   (   Râ   Rã   Rä   (    (    (   R9   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   testù  s    (   R   R   RU   RV   RW   (   R8   Rå   (    (   R9   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_setitem_invalidö  s    c         C   s   t  j   } d | d <d | d <| d d k s6 t  | d d k sL t  | d d k sb t  | j d d k s{ t  | j d d k s t  d  S(   NRq   Rs   R|   R;   i    (   Rq   (   N(   R   R   t   NoneR   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_setitem_1tupleþ  s    

c         C   s±   t  j   } d | d <d | d <| d d k s6 t  | d d k sL t  | d d k sb t  | j d d k s{ t  | j d d k s t  | j d d k s­ t  d  S(	   NRq   Rr   Rs   R|   R;   i    (   Rq   Rr   (   NN(   R   R   Rç   R   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_setitem_2tuple  s    

c         C   sP   t  j   } d | d <| d d k s, t  d | d <| d d k sL t  d S(   si   
        Setting the value of a card to None should simply give that card a
        blank value.
        Rq   Rs   R;   N(   R   R   R   Rç   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_set_value_to_none  s
    

c         C   sX   t  j d g  } | j d d d | d d k s; t  | j d d k sT t  d  S(   NR0   R1   R2   RT   R3   (   R0   R1   R2   (   R   R   Rx   R   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_set_comment_only  s    c         C   s7   t  j d d g  } t |  d d g k s3 t  d  S(   NR0   R1   R2   R3   (   R0   R1   (   R2   R3   (   R   R   Rv   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_iter%  s    c         C   sB  t  j d d d g  } | d } t |  d k s: t  d | k sL t  d | k s^ t  d | k sp t  | d  d  d	  } t |  d
 k s t  | d d k s± t  | d d k sÇ t  | d d k sÝ t  | d  d  d  } t |  d k st  d | k st  d | k s,t  d | k s>t  d  S(   NR0   R1   R2   R3   R4   R5   i   i   iÿÿÿÿi   i    (   R0   R1   (   R2   R3   (   R4   R5   (   R   R   R`   R   (   R8   R9   t	   newheader(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_slice)  s     
c         C   sÄ   t  j d d d g  } d | d )| d d k s8 t  | d d k sN t  d	 | d )| d d	 k sn t  | d d	 k s t  d
 d g | d )| d d
 k sª t  | d d k sÀ t  d S(   sp   
        Assigning to a slice should just assign new values to the cards
        included in the slice.
        R0   R1   R2   R3   R4   R5   i   i   t   GHt   Ht   IN(   R0   R1   (   R2   R3   (   R4   R5   (   R   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_slice_assignment=  s    

c         C   sm   t  j d
 d d g  } | d 3t |  d k s7 t  | d d k sM t  | 2t |  d k si t  d	 S(   s/   Test deleting a slice of cards from the header.R0   R1   R2   R3   R4   R5   i   i    N(   R0   R1   (   R2   R3   (   R4   R5   (   R   R   R`   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_slice_deleteU  s    c         C   sj   t  j d	 d
 d g  } | d } t |  d k s: t  | d d k sP t  | d d k sf t  d S(   s>   Test selecting a subsection of a header via wildcard matching.t   ABCi    t   DEFi   t   ABDi   s   AB*N(   Rô   i    (   Rõ   i   (   Rö   i   (   R   R   R`   R   (   R8   R9   Rí   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_wildcard_slice_  s
    
c         C   sp   t  j d d d g  } t | d  d k s4 t  t | d  d k sP t  t | d	  d k sl t  d
 S(   sp   
        Regression test for issue where wildcards did not work on keywords
        containing hyphens.
        t   DATEi   s   DATE-OBSi   s   DATE-FOOi   s   DATE*s   DATE?*s   DATE-*N(   Rø   i   (   s   DATE-OBSi   (   s   DATE-FOOi   (   R   R   R`   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_wildcard_with_hyphenh  s    c         C   sÄ   t  j d d d g  } d | d <| d d k s8 t  | d d k sN t  d | d <| d d k sn t  | d d k s t  d	 d
 g | d <| d d	 k sª t  | d d
 k sÀ t  d S(   s@   Test assigning to a header slice selected via wildcard matching.Rô   i    Rõ   i   Rö   i   s   AB*Rï   Rð   Rñ   N(   Rô   i    (   Rõ   i   (   Rö   i   (   R   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_wildcard_slice_assignments  s    

c         C   sQ   t  j d	 d
 d g  } | d =t |  d k s7 t  | d d k sM t  d S(   s@   Test deleting cards from a header that match a wildcard pattern.Rô   i    Rõ   i   Rö   i   s   AB*N(   Rô   i    (   Rõ   i   (   Rö   i   (   R   R   R`   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_wildcard_slice_deletion  s    c         C   sG   t  j d
 d d d d d g  } | d d d d d	 g k sC t  d  S(   NRô   i    Rd   i   i   Rõ   i   i   i   (   Rô   i    (   Rd   i   (   Rd   i   (   Rõ   i   (   Rd   i   (   Rd   i   (   R   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_history  s    c         C   s_   t  j d d g  } | j   d | k s1 t  d | k sC t  t |  d k s[ t  d  S(   NR0   R1   R2   R3   i    (   R0   R1   (   R2   R3   (   R   R   t   clearR   R`   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_clear  s
    
c         C   s   t  j j d d g  } d | k s* t  | d d k s@ t  | j d d k sY t  d | k sk t  | d d k s t  | j d d k s t  d  S(   NR0   R1   R;   (   R   R   t   fromkeysR   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_fromkeys  s    c         C   s¡   t  j j d d g d  } d | k s- t  | d d k sC t  | j d d k s\ t  d | k sn t  | d d k s t  | j d d k s t  d  S(   NR0   R1   R2   R;   (   R   R   Rÿ   R   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_fromkeys_with_value¥  s    c         C   s]   t  j j d g d  } d | k s* t  | d d k s@ t  | j d d k sY t  d  S(   NR0   R1   R2   (   R1   R2   (   R   R   Rÿ   R   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt+   test_header_fromkeys_with_value_and_comment®  s    c         C   sØ   t  j j d d d g d  } d | k s0 t  d | k sB t  d | k sT t  d	 | k sf t  | d d k s| t  | d d k s t  | d
 d k sš t  | d d k sŸ t  | d d k sÔ t  d  S(   NR0   R1   R2   i    i   i   (   R0   i    (   R0   i   (   R0   i   (   R0   i    (   R0   i   (   R   R   Rÿ   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt$   test_header_fromkeys_with_duplicatesŽ  s    c         C   sC   t  j d d g  } t | j    t t |   k s? t  d  S(   NR0   R1   R2   R3   (   R0   R1   (   R2   R3   (   R   R   Rv   t   itemsR   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_itemsÀ  s    c         C   sQ   t  j d d g  } x5 t t |  |  D] \ } } | | k s+ t  q+ Wd  S(   NR0   R1   R2   R3   (   R0   R1   (   R2   R3   (   R   R   R	   R   R   (   R8   R9   R   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_iterkeysÄ  s    "c         C   sW   t  j d d g  } x; t t |  d d g  D] \ } } | | k s1 t  q1 Wd  S(   NR0   R1   R2   R3   (   R0   R1   (   R2   R3   (   R   R   R	   R   R   (   R8   R9   R   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_itervaluesÉ  s    (c         C   sP   t  j |  j d   } t | d j  d d d d d d d	 g k sL t  d  S(
   Ns   arange.fitsi    t   SIMPLERÄ   RÅ   Rt   Ru   t   NAXIS3RÆ   (   R   R   R   Rv   R9   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_keysÎ  s    c         C   s7  t  j d d d d g  } | j   } | d k s9 t  t |  d	 k sQ t  t |  d d d g k sr t  | j d
  } | d k s t  t |  d k s« t  t |  d d g k sÉ t  | j d  } | d k sê t  t |  d
 k st  t |  d g k st  t j t | j d  d  S(   NR0   R1   R2   R3   R4   R5   t   GRð   i   i   i   i    i*   (   R0   R1   (   R2   R3   (   R4   R5   (   R  Rð   (	   R   R   t   popR   R`   Rv   RU   RV   t
   IndexError(   R8   R9   t   lastt   midt   first(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_list_like_popÔ  s    !c         C   s  t  j d d d d g  } t j t | j d d d  | j d  } | d k sX t  t |  d	 k sp t  t |  d d d g k s t  | j d  } | d k s² t  t |  d
 k sÊ t  t |  d d g k sè t  | j d  } | d k s	t  t |  d k s!t  t |  d g k s<t  | j d d  } | d k s`t  t |  d k sxt  t j t	 | j d  d  S(   NR0   R1   R2   R3   R4   R5   R  Rð   i   i   i   t   Xt   Y(   R0   R1   (   R2   R3   (   R4   R5   (   R  Rð   (
   R   R   RU   RV   t	   TypeErrorR  R   R`   Rv   RÍ   (   R8   R9   R  R  R  t   default(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_dict_like_popé  s&    !c         C   sã   t  j d
 d d g  } | j   \ } } | | k s< t  t |  d k sT t  | j   \ } } | | k sx t  t |  d k s t  | j   \ } } | | k sŽ t  t |  d	 k sÌ t  t j t | j  d  S(   NR0   R1   R2   R3   R4   R5   i   i   i    (   R0   R1   (   R2   R3   (   R4   R5   (   R   R   t   popitemR   R`   RU   RV   RÍ   (   R8   R9   R=   RD   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_popitem  s    c         C   s  t  j d d d g  } | j d  d k s3 t  | j d  d k sN t  | j d  d k si t  t |  d k s t  | j d d	  d	 k s t  t |  d
 k s· t  d | k sÉ t  | j d d	  d	 k sç t  t |  d
 k sÿ t  d  S(   NR0   R1   R2   R3   R4   R5   i   R  Rð   i   (   R0   R1   (   R2   R3   (   R4   R5   (   R   R   t
   setdefaultR   R`   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_setdefault  s    c         C   s3  t  j d d g  } | j i d d 6d d 6 | d d k sF t  | d d k s\ t  d | k sn t  | d d k s t  | d	 d k s t  t  j d d g  } | j d d d d  | d d k sÛ t  | d d k sñ t  d | k st  | d d k st  | d	 d k s/t  d
 S(   sm   
        Test adding new cards and updating existing cards from a dict using
        Header.update()
        R0   R1   R2   R3   R4   R  R5   i    iÿÿÿÿN(   R0   R1   (   R2   R3   (   R0   R1   (   R2   R3   (   R   R   Rw   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_from_dict  s    c         C   s¢   t  j d d g  } | j d t  j d d  g  | d d k sJ t  | d d k s` t  d | k sr t  | d d k s t  | d	 d k s t  d
 S(   sv   
        Test adding new cards and updating existing cards from an iterable of
        cards and card tuples.
        R0   R1   R2   R3   R4   R5   R  i    iÿÿÿÿN(   R0   R1   (   R2   R3   (   R0   R4   (   R   R   Rw   R<   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_from_iterable3  s    c         C   sC  t  j   } t  j   } d | j d <| j | j 7_ t | j  d k sR t  | j d d k sk t  t  j   } | j | j | _ t | j  d k s¥ t  | j d d k sŸ t  | j j | j d t t | j  d k sò t  t | j  d d k st  | j d d k s*t  d | j k s?t  d
 S(   sr   
        Test extending a header both with and without stripping cards from the
        extension header.
        s   some vals   some commentt   MYKEYi   iÿÿÿÿR   i   t   XTENSIONi   N(   s   some vals   some comment(   R  i   (	   R   R°   t   ImageHDUR9   R`   R   t   extendRE   Rv   (   R8   R²   t   hdu2(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_extendA  s    c         C   s  t  j   } t  j   } d | j d <d | j d <| j j | j  t | j  d k s` t  | j d d k sy t  | j d d k s t  t  j   } t  j   } d | j d <d | j d <| j j | j d	 t t | j  d
 k sø t  | j d d k st  d S(   sI   
        Test extending the header with and without unique=True.
        s   some vals   some commentR  s   some other vals   some other commenti   iþÿÿÿiÿÿÿÿt   uniquei   N(   s   some vals   some comment(   s   some other vals   some other comment(   s   some vals   some comment(   s   some other vals   some other comment(   R   R°   R  R9   R   R`   R   R   (   R8   R²   R!  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_extend_unique\  s    c         C   sÀ   x¹ d d d g D]š } x t  t g D] } t j   } | | j k sJ t  t j   } d | j | <| j j | j d | t | j  d k s t  | j | d d k s# t  q# Wq Wd S(	   s   
        Test extending header with and without unique=True and commentary
        cards in the header being added. Issue astropy/astropy#3967
        R;   R   Rd   s   My textR#  i   i    N(	   R   RE   R   R°   R9   R   R  R   R`   (   R8   t   commentary_cardt	   is_uniqueR²   R!  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt$   test_header_extend_unique_commentaryq  s    c         C   sÛ  t  j   } t  j   } d | j d <d | j d <d | j d <d | j d <d | j d <| j j | j  t | j  d	 k s t  d | j k s t  d | j k s± t  | j d d k sÊ t  t | j d  d k sé t  | j d d k st  t  j   } d | j d <d | j d <| j j | j d t t | j  d k s\t  d | j k sqt  d | j k st  | j d d k st  t | j d  d k sŸt  | j d d k s×t  d S(   sI   
        Test extending the header with and without update=True.
        s   some vals   some commentR  s	   history 1Rd   s   some other vals   some other comments	   history 2i	   i    i   i   iÿÿÿÿRw   i   i   N(   s   some vals   some comment(   s   some other vals   some other comment(   R  i    (   R  i   (   R  i   (   s   some vals   some comment(   R  i    (   R  i   (   R   R°   R  R9   R   R`   R   R   (   R8   R²   R!  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_extend_update  s0    c         C   sÀ   x¹ d d d g D]š } x t  t g D] } t j   } | | j k sJ t  t j   } d | j | <| j j | j d | t | j  d k s t  | j | d d k s# t  q# Wq Wd S(	   sö   
        Test extending header with and without unique=True and commentary
        cards in the header being added.

        Though not quite the same as astropy/astropy#3967, update=True hits
        the same if statement as that issue.
        R;   R   Rd   s   My textRw   i   i    N(	   R   RE   R   R°   R9   R   R  R   R`   (   R8   R%  t	   is_updateR²   R!  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt$   test_header_extend_update_commentary   s    c         C   sS   t  j |  j d   } t  j   } | j | d t d t | | k sO t  d S(   s°   
        Test that extending an empty header with the contents of an existing
        header can exactly duplicate that header, given strip=False and
        end=True.
        s
   test0.fitsR   t   endN(   R   t	   getheaderR   R   R   RE   R   R   (   R8   R9   RÉ   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_extend_exact³  s    c         C   s²   t  j d d d g  } | j d  d k s3 t  | j d  d k sN t  | j d  d k si t  d | d	 <d
 | d	 <| j d	  d k s t  t j t | j d  d  S(   NR0   R1   R2   R3   R4   R5   i   R   Rd   R   i   R  (   R0   R1   (   R2   R3   (   R4   R5   (   R   R   t   countR   RU   RV   RÍ   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_count¿  s    

c         C   s  t  j d d g  } | j   | j   t |  d k sA t  | d d k sW t  | d d k sm t  | j d  t |  d k s t  | d d
 k sš t  | d d k sŸ t  | j d d t t |  d k sé t  | d d k sÿ t  | d d k st  d S(   s   
        Tests that blank cards can be appended, and that future appends will
        use blank cards when available (unless useblanks=False)
        R0   R1   R2   R3   i   iÿÿÿÿR;   iþÿÿÿR4   R5   R  Rð   t	   useblanksi   N(   R0   R1   (   R2   R3   (   R4   R5   (   R  Rð   (   R   R   R±   R`   R   RE   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_append_use_blanksÉ  s    

c         C   sù   t  j d d g  } | j d  t |  d k s: t  t |  d d k sV t  | d d k sl t  | j d d k s t  | j d  t |  d	 k sª t  t |  d d k sÆ t  | d d k sÜ t  | j d d k sõ t  d
 S(   si   
        Test appending a new card with just the keyword, and no value or
        comment given.
        R0   R1   R2   R3   R4   i   iÿÿÿÿR;   i   N(   R0   R1   (   R2   R3   (   R   R   R±   R`   R   Rv   R7   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_append_keyword_onlyä  s    c         C   sñ   t  j d d g  } | j   | j   | j d d  t |  d k sQ t  | d d k sg t  | d	 d
 k s} t  | d d k s t  | j d d d t t |  d k sÁ t  | d d k s× t  | d	 d
 k sí t  d  S(   NR0   R1   R2   R3   i   R4   R5   i   iÿÿÿÿR;   iþÿÿÿR  Rð   R0  i   (   R0   R1   (   R2   R3   (   R4   R5   (   R  Rð   (   R   R   R±   RÕ   R`   R   RE   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_insert_use_blanksû  s    

c         C   sì  t  j d d d g  } | j d d  t | j    d	 d k sJ t  | d	 d k s` t  | j d	 d k sy t  | j d d d t t | j    d d k s± t  t | j    d d
 k sÓ t  | d d k sé t  | j d d  | d d d d g k st  | j d d d t | d d d d d g k sPt  | j d d t f  t | j    d d k st  | j d d t f d t t | j    d d k sÆt  t | j    d d k sèt  d S(   sÛ   
        Test that a keyword name or tuple can be used to insert new keywords.

        Also tests the ``after`` keyword argument.

        Regression test for https://github.com/spacetelescope/PyFITS/issues/12
        Rt   i
   R   s	   Comment 1s	   Comment 3RÅ   i   s   Number of axesi    Ru   i   Re   i   s	   Comment 2s	   Comment 4iÿÿÿÿRŠ   iþÿÿÿR§   iýÿÿÿN(   Rt   i
   (   R   s	   Comment 1(   R   s	   Comment 3(   RÅ   i   s   Number of axes(   Ru   i   (   R   i   (   R   s	   Comment 2(   R   i   (   R   s	   Comment 4(   R   R   RÕ   Rv   Rl   R   R7   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt!   test_header_insert_before_keyword  s*    	"""""c         C   s?  t  j d
 d g  } | j d  t |  d k s: t  t |  d g k sU t  d | k sg t  t j t   | j d  Wd  QX| j d d t	 t |  d k sµ t  t  j d d d g  } | j d d t	 d | k sò t  t |  d k s
t  t |  d g k s%t  | d	 d k s;t  d  S(   NR0   R1   R2   R3   i   R5   t   ignore_missingt
   remove_alli    (   R0   R1   (   R2   R3   (   R0   R1   (   R2   R3   (   R0   R5   (
   R   R   t   removeR`   R   Rv   RU   RV   RÍ   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_remove4  s    c         C   s4   t  j d d	 g  } t | j  d k s0 t  d  S(
   NR0   R1   R2   Rõ   R  Rð   s          A  C
     DEF  H(   R0   R1   R2   (   Rõ   R  Rð   (   R   R   R©   R7   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_commentsO  s    c         C   s©   t  j d d d g  } | j d
 } t |  d d	 g k sC t  | j d  d  d  } t |  d	 d d g k sz t  | j d } t |  d d	 g k s¥ t  d  S(   Nt   ABR2   R3   t   EFR  Rð   t   AIt   Jt   Ki   iÿÿÿÿs   A*(   R:  R2   R3   (   R;  R  Rð   (   R<  R=  R>  (   R   R   R7   Rv   R   (   R8   R9   t   s(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_comment_slices_and_filtersU  s    !c         C   s1  t  j d d d g  } d
 | j d )t | j  d d
 d
 g k sI t  | j | j d  j d k sn t  | j | j d  j d
 k s t  | j | j d  j d
 k sž t  | j | j d  d  d  <t | j  d
 d
 d g k sö t  d d g | j d <t | j  d d
 d g k s-t  d  S(   NR:  R2   R3   R;  R  Rð   R<  R=  R>  t   Li   iÿÿÿÿt   Mt   Ns   A*(   R:  R2   R3   (   R;  R  Rð   (   R<  R=  R>  (   R   R   R7   Rv   R   Rg   RÈ   RT   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt    test_comment_slice_filter_assign_  s    $%%%$c         C   s  t  j   } t t d   } x | D] } | | d <q% W| d d | d k sW t  | d d  | d  k su t  | d d  | d  k s t  | d d  | d  k s± t  | d d  d  d  | d  d  d  k sá t  | d d d  d  | d d  d  k st  | d d d d  | d d d  k sAt  | j d	 d  | j d d t t | d d  | d k st  t | d d   | d  k s¬t  t | d d   | d  k sÐt  t | d d   | d  k sôt  t | d d  d  d   | d  d  d  k s*t  t | d d d  d   | d d  d  k s`t  t | d d d d   | d d d  k st  d  S(   Ni   Rd   i   i   i   iþÿÿÿiÿÿÿÿi   i    R0   R1   R2   R3   R4   R5   R+  (   R0   R1   R2   (   R3   R4   R5   (   R   R   Rv   R
   R   RÕ   R±   R   (   R8   R9   t   indicest   idx(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_commentary_slicingn  s(    000$$$$66c         C   së   t  j   } d | d <d | d <d | d <d | d <d | d <| d d d d g k s] t  d | d d	 <| d d d d g k s t  d | d d
 )| d d d d g k s· t  d d g | d (| d d d d g k sç t  d  S(   NRq   Rs   Rô   Rd   t   BARNEYt   FREDRõ   t   GHIi    i   Rr   R~   (   R   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_commentary  s    




c         C   sl   t  j   } d | d <d | d <d | d <| d | d k sD t  d | d <| d | d k sh t  d S(   s  
        Regression test for an issue found in *writing* the regression test for
        https://github.com/astropy/astropy/issues/2363, where comparison of
        the list of values for a commentary keyword did not always compare
        correctly with other iterables.
        s   hello worldRd   R   N(   R   R   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_commentary_comparison£  s    



c         C   sÏ  t  j   } d | d <d | d <d d } | | d <d | d	 <| | d <t |  d
 k s` t  t |  d d	 k s| t  t | j d  d | d  k s£ t  t | j d  j   d | d k sÐ t  | j d | d d t |  d k sþ t  t | j d  d | d  k s%t  t | j d  j   d | d k sRt  t  j   } | j	 i d d 6 | j	 i d d 6 d d } | j
 |  | j	 i d d	 6 | j
 |  t | j  d
 k sÙt  | j d j d	 k sõt  t | j d  d | d  k st  t | j d  j   d | d k sIt  | j
 | d d t | j  d k swt  t | j d  d | d  k st  t | j d  j   d | d k sËt  d  S(   NRq   Rs   R~   Rr   Rô   i   Rd   RH  RI  i   i   i   s   HISTORY iH   i   Re   i	   i   (   R   R   R`   R   Rv   RA   Rg   R®   Rx   Rw   Rf   R=   (   R8   R9   t   longval(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_long_commentary_card³  s<    





'-'-
'-'c      
   C   së  t  j |  j d   } | d j j |  j d   t  j   } | j j i d d 6 | j j | j j	 |  j d   d t
 d t
 | j |  j d  d	 d
 t t  j |  j d   d t  j  sÓ t  t  j   } | j j i d d 6 | j j | j j	 |  j d   d t
 d t
 d t d | j k sBt  d | j k sWt  d | j k slt  t   ' | j |  j d  d	 d
 d t
 Wd  QXt  j |  j d   } t |  d k sÎt  d | d j k sçt  d  S(   Ns
   test0.fitsi    s
   header.txtRs   R  Rw   t   update_firsts	   test.fitst   output_verifyt   ignoreR   t	   EXTENSIONR  t	   overwritei   i   (   R   R   R   R9   t
   totextfileR   R  Rw   R   t   fromtextfileR   R   t
   isinstanceR°   R   RE   R   R`   (   R8   R   R²   t   hdul2(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_totxtfileØ  s,    $$
c         C   s   t  j   } d | d <d | d <d | d <t |  j d  d  * } | j d j d	   | j D   Wd
 QXt  j j |  j d   } | | k s t  d
 S(   sà   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/122

        Manually write a text file containing some header cards ending with
        newlines and ensure that fromtextfile can read them back in.
        R1   R2   R0   R3   R4   s   test.hdrRb   s   
c         s   s!   |  ] } t  |  j   Vq d  S(   N(   RA   R   (   R&   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pys	   <genexpr>  s    N(   R1   R2   (   R2   R3   (   R3   R4   (	   R   R   R   R   t   writeR­   Rg   RU  R   (   R8   R9   t   fRÉ   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_fromtextfileõ  s    


)c         C   s©   t  j d d g  } t |  j d  d  7 } | j d	 j d
   | j D   | j d  Wd QXt  j j |  j d   } d | k s t  | | k s¥ t  d S(   s³   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/154

        Make sure that when a Header is read from a text file that the END card
        is ignored.
        R0   R1   R2   R3   R4   R5   s   test.hdrRb   s   
c         s   s!   |  ] } t  |  j   Vq d  S(   N(   RA   R   (   R&   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pys	   <genexpr>  s    s   
ENDNt   END(   R0   R1   R2   (   R3   R4   R5   (	   R   R   R   R   RY  R­   Rg   RU  R   (   R8   R9   RZ  R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt&   test_header_fromtextfile_with_end_card  s    #c            s¥   t  j d d g      f d   } t j t | d d	  t j t   j d  t j t   j d d
 t t j t   j t    d  t j t   j	 d  d S(   sä   
        Regression test 2 for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/154

        Manually adding an END card to a header should simply result in a
        ValueError (as was the case in PyFITS 3.0 and earlier).
        R0   R1   R2   R3   R4   R5   c            s   |   |  <d  S(   N(    (   RË   t   v(   R9   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   setitem'  s    R\  R;   R+  N(   R0   R1   R2   (   R3   R4   R5   (
   R   R   RU   RV   RW   R±   R   RÕ   R`   Rx   (   R8   R_  (    (   R9   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_append_end_card  s    c            s3  t  j d t j d   j     f d   } | d t  } t   e } t  j j |  } |   k sl t	  t
 |  d k s t	  t | d j  j d  sŠ t	  Wd QX| d	 t  } t   e } t  j j |  } |   k së t	  t
 |  d k st	  t | d j  j d
  s%t	  Wd QX| d t  } t   e } t  j j |  } |   k sjt	  t
 |  d k st	  t | d j  j d  s€t	  Wd QX| d t  } t   k } t  j j | d t } |   k sït	  t
 |  d k st	  t | d j  j d  s)t	  Wd QXd S(   sX  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/217

        This tests the case where the END card looks like a normal card like
        'END = ' and other similar oddities.  As long as a card starts with END
        and looks like it was intended to be the END card we allow it, but with
        a warning.
        R   id   c            sr     j  d d d t d t  } | |  7} | rK | d t t |   7} n  t | t  rd t |  St |  Sd  S(   Nt   sepR;   t   endcardt   paddingR¬   (   t   tostringRE   R   R`   RV  t   bytesR   R   (   R+  t   padR?  (   t   horig(    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   invalid_header<  s    

s   END =i   i    s+   Unexpected bytes trailing END keyword: ' ='Ns
   END     = s/   Unexpected bytes trailing END keyword: '     ='s   END$%&%^*%*s1   Unexpected bytes trailing END keyword: '$%&%^*%*'R\  Rc  s(   Missing padding to end of the FITS block(   R   R°   t   npt   arangeR9   R   R   R   t   fromfileR   R`   RA   R   t
   startswithRE   (   R8   Rh  R?  Rb   R»   (    (   Rg  s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_invalid_end_cards0  s<    
s   six.PY2c      	   C   s|  t  j   } d | d <d | d <t  j d | d t j d   } | j |  j d   t |  j d  d	   } | j   } Wd
 QX| j	 d d j
 d   } | j	 d d j
 d   } t |  j d  d   } | j |  Wd
 QXt    } t  j |  j d   } | d d k s"t  | d d k s8t  t |  d k sPt  t | d j  j d  srt  Wd
 QXd
 S(   s5   
        Test header with invalid characters
        Rq   Rs   t   helloR   R9   R   i   s	   test.fitst   rbNu   hÃ©llot   latin1u   BÃRs
   test2.fitst   wbs   B?Rs   h?lloi   i    s1   non-ASCII characters are present in the FITS file(   R   R   R°   Ri  Rj  R   R   R   t   readt   replacet   encodeRY  R   R,  R   R`   RA   R   Rl  (   R8   R»   R   RZ  t   outRL   Rb   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_invalid_charactersy  s$    

!c         C   sø  t  j d d d g  } | j d d d t |  d d d g k sL t  | j s\ t  | j d d d t |  d d d g k s t  | j s  t  | j d d d t |  d d d g k sÔ t  | j sä t  | j d d d t |  d d d g k st  | j s(t  | j d d d t |  d d d g k s\t  | j slt  | j d d d	 t |  d d d g k s t  | j s°t  | j d d d	 t |  d d d g k sät  | j sôt  d
 S(   sÝ   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/125

        Ensures that a header is not modified when setting the position of a
        keyword that's already in its correct position.
        R0   R1   R2   R3   t   beforei   Re   i    i{   N(   R0   R1   (   R1   R2   (   R2   R3   (   R   R   Rx   Rv   R   t	   _modified(   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_unnecessary_move  s,    !!!!!!!c         C   sú  d } t  j j | d d } | d d k s4 t  | d d k sJ t  t | j d  t d  k so t  | j d j s t  t | j d  t d	  k sª t  | j d j sÀ t  | j sÏ t  t  j j | d d } t | j d  t d  k st  | j d j s"t  t | j d  t d	  k sGt  | j d j s]t  | d d k sst  | d d k st  | j st  d | d <d | d <t | j d  t d  k sÑt  t | j d  t d	  k söt  d
 S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/137s=   FOCALLEN= +1.550000000000e+002
APERTURE= +0.000000000000e+000Ra  s   
t   FOCALLENg     `c@t   APERTUREg        s   FOCALLEN= +1.550000000000E+002s   APERTURE= +0.000000000000E+000N(   R   R   RC   R   RA   Rg   R   Rx  (   R8   t   hstrR»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_invalid_float_cardsœ  s6    

c      	   C   s÷   t  j   } d | j d <| j |  j d   t |  j d  d  ' } | j d  | j t d   Wd QXt  j |  j d   } t	   # } | j |  j d  d	 d
 Wd QXt
 |  d k sÎ t  t | d j  } d | k só t  d S(   sW   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/140
        gÊÞÑEàÈ >R£   s	   test.fitss   rb+iZ  R    Ns	   temp.fitsRP  t   warni   i   s'   (invalid value string: '5.0022221e-07')(   R   R°   R9   R   R   R   t   seekRY  R   R   R`   R   RA   R   (   R8   R   R²   RZ  R   Rb   RÝ   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_invalid_float_cards2ë  s    "c         C   sÓ   t  j j d  } t |  t d  k s0 t  | j d k sE t  t  j j d  } t |  t d  k su t  | j d k s t  t  j j d  } t |  t d  k sº t  | j d k sÏ t  d S(   s8  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/137, part 2

        Ticket https://aeon.stsci.edu/ssb/trac/pyfits/ticket/137 also showed that in
        float values like 0.001 the leading zero was unnecessarily being
        stripped off when rewriting the header.  Though leading zeros should be
        removed from integer values to prevent misinterpretation as octal by
        python (for now Astropy will still maintain the leading zeros if now
        changes are made to the value, but will drop them if changes are made).
        s   APERTURE= +0.000000000000E+000g        s   APERTURE= 0.000000000000E+000s   APERTURE= 017i   N(   R   R<   RC   RA   R   R   RD   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_leading_zeros  s    c         C   sê  t  d  } t  d  } t j   } t | d <t | d <| d t k sN t  | d t k sd t  t | j d  | k s t  t | j d  | k s¢ t  t j   } t j	 t  | d <t j	 t  | d <| d t k sê t  | d t k s t  t | j d  | k st  t | j d  | k s>t  t j   } | j
 t j j |   | j
 t j j |   | d t k st  | d t k sšt  t | j d  | k sÇt  t | j d  | k sæt  d S(   s£   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/123

        Tests assigning Python and Numpy boolean values to keyword values.
        s   FOO     =                    Ts   BAR     =                    FRs   Rq   N(   R   R   R   R   RE   R   RA   Rg   Ri  t   bool_R±   R<   RC   (   R8   t   fooimgt   barimgR»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_assign_boolean  s.    

c         C   s)  t  j d d d g  } t |  d d d	 g k s9 t  d
 | k sK t  d | k s] t  | d d k ss t  t | d  d k s t  d | d <| d
 d k s¯ t  t |  d k sÇ t  | d =t |  d d g k sì t  t |  d k st  | j d  d k st  | j d d  | d d k sEt  | j d d d d t |  d	 d d g k s|t  | j d  d k st  t |  d k s¯t  | j d d  d k sÍt  t |  d k såt  | j d d  d k st  t |  d k st  t |  d	 d d g k s<t  | j	 i d d 6d d 6 t |  d k sot  t |  d	 d d d g k st  | d	 d k s©t  | j
 d  d k sÄt  | j d  d k sßt  | j d  t |  d k st  t |  d	 d d g k s%t  d S(   s  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/149

        Basically ensures that all public Header methods are case-insensitive
        w.r.t. keywords.

        Provides a reasonably comprehensive test of several methods at once.
        t   abCi   t   Defi   t   GeHi   Rô   Rõ   t   GEHR?   t   dEft   gehs   g*t   aBct   gEht   deft   AbcRw  i   t   iJkt   IJKt   ijkN(   R  i   (   R  i   (   R  i   (   R   R   Rv   R   R`   t   getRx   R  R  Rw   R.  RÈ   R7  (   R8   R»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt(   test_header_method_keyword_normalization>  sB    
!
!!$c      	   C   sù  t  j d  j d  } t j d |  } d | j d <| j j   | j j   | j |  j d   t j	 |  j d  d t
 [ } d | d	 j k s¡ t  | d	 j | j k sœ t  | d	 j | k j   sÜ t  Wd
 QXx& t | j  d k  r
| j j   qå Wt   ! | j |  j d  d t Wd
 QXt j	 |  j d   [ } d | d	 j k skt  | d	 j | j k st  | d	 j | k j   sŠt  Wd
 QX| j j |  j d   t j j |  j d   } | j | k sõt  d
 S(   sÈ   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/142

        Tests a case where the comment of a card ends with END, and is followed
        by several blank cards.
        id   i
   R   s   Test vals   This is the ENDt   TESTKWs	   test.fitst   memmapi    Ni$   RS  s   test.hdr(   i
   i
   (   s   Test vals   This is the END(   Ri  Rj  t   reshapeR   R°   R9   R±   R   R   R   RE   R   R   R,   R`   R   R   RT  R   RU  (   R8   R   R²   R   RÉ   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_end_in_commentw  s*    !%
"%c            sË  t  d  }   f d   } t j     d   t  d  <d   k sI t    d d k s_ t    t  d  d k s{ t  t    t d  k s t  t j t | | d  t  d    d <  t  d  d k sÛ t    t  d  t  d  k sý t  t    t d  k st  t j t | d |  d t  d  f   d <  d d k s]t    d t  d  k syt    j	 d d k st    j	 d t  d  k s±t  t    t d  k sÏt  t  d  t  d  f   d <  d d k st    d t  d  k st    j	 d d k s6t    j	 d t  d  k sUt  t    t d  k sst  t j t | d d | f  t j t | d | d f  t j t | d | | f  d	 S(
   sj  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/134

        Assigning a unicode literal as a header value should not fail silently.
        If the value can be converted to ASCII then it should just work.
        Otherwise it should fail with an appropriate value error.

        Also tests unicode for keywords and comments.
        s   \u30a8\u30ea\u30c3\u30afc            s   |   |  <d  S(   N(    (   R=   R'   (   R»   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   assign¬  s    Rq   Rs   s   FOO     = 'BAR     'Rr   s   FOO     = 'BAZ     's$   FOO     = 'BAR     '           / BAZN(
   R   R   R   R   R©   R   RU   RV   RW   R7   (   R8   t   erikkuR  (    (   R»   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_assign_unicode  s:    "c         C   s`   t  j   } t j r7 t j t | j d t d   n% t j t | j d t	 d d d  d S(   s  
        First regression test for
        https://github.com/spacetelescope/PyFITS/issues/37

        Although test_assign_unicode ensures that Python 2 `unicode` objects
        and Python 3 `str` objects containing non-ASCII characters cannot be
        assigned to headers, there is a bug that allows Python 2 `str` objects
        of arbitrary encoding containing non-ASCII characters to be passed
        through.

        On Python 3 it should not be possible to assign bytes to a header at
        all.
        R£   s   Ã±t   Hellot   encodingt   asciiN(
   R   R   R   t   PY2RU   RV   RW   Rx   RA   Re  (   R8   R»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_assign_non_asciiÏ  s
    	"c         C   s¥  t  j   } d | d <| d d k s, t  t  j j d  } | j |  | d d k sa t  | j d j j   d k s t  | j d j j   d k s¥ t  t  j	 j
 d t  u | d d k sÑ t  | d d k sç t  | j d j j   d k s	t  | j d j j   d k s+t  Wd	 QX| d d k sGt  | d d k s]t  | j d j j   d k st  | j d j j   d k s¡t  d	 S(
   sZ  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/146, and
        for the solution that is optional stripping of whitespace from the end
        of a header value.

        By default extra whitespace is stripped off, but if
        `fits.conf.strip_header_whitespace` = False it should not be
        stripped.
        s	   Bar      Rs   t   Bars   QUX     = 'Bar        'R~   s   FOO     = 'Bar      't   strip_header_whitespaces   Bar        N(   R   R   R   R<   RC   R±   Rg   Ra   R®   t   conft   set_tempRE   (   R8   R»   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_header_strip_whitespaceå  s"    
"""("c         C   s!  d d d d g d } t  j   } x | D] } | | j d <q) W| j |  j d   t  j |  j d   $ } | d j d | k s t  Wd	 QXt  j d
 | j  } | j d | j d k sÉ t  | j |  j d   t  j |  j d   $ } | d j d | k st  Wd	 QXd	 S(   s{  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/156

        When creating a new HDU from an existing Header read from an existing
        FITS file, if the origianl header contains duplicate HISTORY values
        those duplicates should be preserved just as in the original header.

        This bug occurred due to naivete in Header.extend.
        s   CCD parameters table ...s*      reference table oref$n951041ko_ccd.fitss#        INFLIGHT 12/07/2001 25/02/2002s        all bias framesi   Rd   s	   test.fitsi    NR9   s
   test2.fits(   R   R°   R9   R   R   R   R   (   R8   t   historyR²   t   itemR   t   new_hdu(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt*   test_keep_duplicate_history_in_orig_header  s    # c         C   sÙ  t  j j d  } t  j j d  } t  j j d d  } t  j   } t   7 } | j j |  | j j |  | j j |  Wd QXt |  d k s  t  | j	 |  j
 d   t   } t  j |  j
 d   ó } t |  d k sõ t  | d j } d	 | k st  d
 | k s&t  d | k s8t  | d	 d k sNt  | d
 d k sdt  | d d d k s~t  t j t | j d	 d  t j t | j d
 d  t j t | j d d  Wd QXWd QXd S(   s   
        Test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/109

        Allow opening files with headers containing invalid keywords.
        s   CLFIND2D: contour = 0.30s   Just some random text.R0   iP   Ni   s	   test.fitsi    t   CLFIND2Ds   Just somt   AAAAAAAAs   : contour = 0.30s   e random text.iH   t   foo(   R   R<   RC   R°   R   R9   R±   R`   R   R   R   R   RU   RV   RW   Rx   (   R8   t   c1t   c2t   c3R²   Rb   R   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_invalid_keyword_cards%  s.    c         C   sA   t  j j d  } | j d  t |  t d  k s= t  d S(   s¥   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/172

        Ensures that when fixing a hierarch card it remains a hierarch card.
        s#   HIERARCH ESO DET CHIP PXSPACE = 5e6R   s#   HIERARCH ESO DET CHIP PXSPACE = 5E6N(   R   R<   RC   R   RA   R   R   (   R8   R   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt$   test_fix_hierarch_with_invalid_valueO  s    c         C   s   t  j   } t j t | j d t d   t j t | j d t j  t j t | j d t d   t j t | j d t j	  d S(   s  
        Regression test for https://github.com/spacetelescope/PyFITS/issues/11

        For the time being it should not be possible to assign the floating
        point values inf or nan to a header value, since this is not defined by
        the FITS standard.
        R£   t   nant   infN(
   R   R   RU   RV   RW   Rx   t   floatRi  R²  R³  (   R8   R»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_assign_inf_nanZ  s
    	c         C   sU  t  j d t f g  } d | d <| d t k	 s8 t  t | d t  sQ t  | d d k sg t  t j t  | d <| d t k s t  t | d <| d t k s° t  t j t  | d <| d t k sÙ t  d | d <| d t k	 sù t  t | d t  st  | d d k s(t  t j t  | d <| d t k sQt  d S(   s   
        Regression test for an issue where a value of True in a header
        cannot be updated to a value of 1, and likewise for False/0.
        R£   i   i    N(	   R   R   R   R   RV  t   intRi  R  RE   (   R8   R»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_booli  s"    


c         C   s  t  j   } d | d <d | d <t | d t  s9 t  t |  j d  sT t  d | d <t | d t  sw t  t |  j d  s t  d | d <t | d t  sµ t  t |  j d  sÐ t  d | d <t | d t  só t  t |  j d  st  d | d <t | d t  s1t  t |  j d  sLt  d | d <t | d t  sot  t |  j d  st  d | d <d	 | d <t | d t  s·t  t |  j d
  sÒt  d | d <t | d t  sõt  t |  j d  st  d | d <t | d t  s3t  t |  j d  sNt  d	 | d <t | d t  sqt  t |  j d
  st  d | d <t | d t  s¯t  t |  j d  sÊt  d | d <t | d t  sít  t |  j d  st  d S(   s  
        Regression test for https://github.com/spacetelescope/PyFITS/issues/49

        Ensure that numeric values can be upcast/downcast between int, float,
        and complex by assigning values that compare equal to the existing
        value but are a different type.
        i   R£   g      ð?s   TEST    =                  1.0s   TEST    =                    1y                s   TEST    =           (1.0, 0.0)i    g        s   TEST    =                  0.0s   TEST    =                    0s   TEST    =           (0.0, 0.0)Ny      ð?        y      ð?        y                y                (	   R   R   RV  RŽ  R   RA   Rl  R¶  t   complex(   R8   R»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_numeric  sN    	













c         C   sÕ   t  j   } t j t | j d d  t j t | j d d  t j t | j d d  t j t | j d d  d g } xU | D]M } t  j j |  } d | k rÀ t j t  j | j	 d  q | j	 d  q Wd S(	   sç   
        Regression test for https://github.com/spacetelescope/PyFITS/issues/51

        Test data extracted from a header in an actual FITS file found in the
        wild.  Names have been changed to protect the innocent.
        Rd   s   
s   
abcs   abc
s   abc
defsÀ  HISTORY File modified by user 'wilma' with fv  on 2013-04-22T21:42:18           HISTORY File modified by user ' fred' with fv  on 2013-04-23T11:16:29           HISTORY File modified by user ' fred' with fv  on 2013-11-04T16:59:14           HISTORY File modified by user 'wilma' with fv  on 2013-04-22T21:42:18
File modifHISTORY ied by user 'wilma' with fv  on 2013-04-23T11:16:29
File modified by useHISTORY r ' fred' with fv  on 2013-11-04T16:59:14                               HISTORY File modified by user 'wilma' with fv  on 2013-04-22T21:42:18
File modifHISTORY ied by user 'wilma' with fv  on 2013-04-23T11:16:29
File modified by useHISTORY r ' fred' with fv  on 2013-11-04T16:59:14
File modified by user 'wilma' HISTORY with fv  on 2013-04-22T21:42:18
File modif
ied by user 'wilma' with fv  HISTORY on 2013-04-23T11:16:29
File modified by use
r ' fred' with fv  on 2013-1HISTORY 1-04T16:59:14                                                           RÂ   N(
   R   R   RU   RV   RW   Rx   R<   RC   t   VerifyErrorR   (   R8   R»   t
   test_cardst
   card_imageR   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_newlines_in_commentaryÐ  s    
	(}   Ro   Rp   t   __doc__R:   R>   RB   RF   RH   RJ   RN   RR   RX   R_   Rc   Ri   Rz   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ì   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/  R1  R2  R3  R4  R8  R9  R@  RD  RG  RK  RL  RN  RX  R[  R]  R`  Rm  RU   t   markt   skipifRv  Ry  R}  R  R  R  R  R  R  R   R¥  R©  R°  R±  Rµ  R·  R¹  Rœ  (    (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyR/   J   sð   	
																										
												
							
				
			=	C		
							
																														
				%			
					%					I	(	.			!	9	(	0			!	*				Kt   TestRecordValuedKeywordCardsc           B   sæ   e  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   Z d   Z d   Z d   Z d   Z d   Z RS(   s/  
    Tests for handling of record-valued keyword cards as used by the
    `FITS WCS distortion paper
    <http://www.atnf.csiro.au/people/mcalabre/WCS/dcs_20040422.pdf>`__.

    These tests are derived primarily from the release notes for PyFITS 1.4 (in
    which this feature was first introduced.
    c         C   sŸ   t  t |   j   t j   |  _ |  j j d d  |  j j d d  |  j j d d  |  j j d d  |  j j d d  |  j j d d  |  j j d d  |  j j d d	  d  S(
   Nt   DP1s   NAXIS: 2s	   AXIS.1: 1s	   AXIS.2: 2s   NAUX: 2s   AUX.1.COEFF.0: 0s   AUX.1.POWER.0: 1s   AUX.1.COEFF.1: 0.00048828125s   AUX.1.POWER.1: 1(   t   superRÁ  t   setupR   R   t   _test_headerRx   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÄ  	  s    c         C   s  t  j j d  } | j d k s' t  | j d k s< t  | j d k sQ t  | j d k sf t  t  j j d  } | j d k s t  | j d k s¢ t  | j d k s· t  t  j j d  } | j d	 k sÞ t  | j d
 k só t  | j d k st  t  j d	 d  } | j d k s/t  | j d k sDt  | j d k sYt  t  j d	 d  } | j d k st  | j d k st  | j d k sªt  t  j d	 d
  } | j d	 k sÑt  | j d
 k sæt  | j d k sût  t  j d d  } | j d k s"t  | j d k s7t  | j d k sLt  t  j d d  } | j d k sst  | j d k st  | j d k st  t	    t  j d d  } Wd QX| j d k sÔt  | j d k sét  | j d k sþt  d S(   sl   
        Test different methods for initializing a card that should be
        recognized as a RVKC
        s    DP1     = 'NAXIS: 2' / A comments	   DP1.NAXISg       @RÅ   s	   A comments   DP1     = 'NAXIS: 2.1'gÍÌÌÌÌÌ @s   DP1     = 'NAXIS: a'RÂ  s   NAXIS: as   NAXIS: 2s
   NAXIS: 2.0i   R   N(
   R   R<   RC   R=   R   RD   t   field_specifierRT   Rç   R   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_initialize_rvkc	  sL    
c         C   sj   t  j j d  } | j d k s' t  | j d k s< t  | j d k sQ t  | j d k sf t  d S(   s   
        Tests that the field_specifier can accessed from a card read from a
        string before any other attributes are accessed.
        s    DP1     = 'NAXIS: 2' / A commentRÅ   s	   DP1.NAXISg       @s	   A commentN(   R   R<   RC   RÆ  R   R=   RD   RT   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_parse_field_specifierC	  s
    c         C   sŠ   t  j j d  } | j d k s' t  d | _ | j d k sE t  | j d k sZ t  | j d k so t  | j d k s t  t |  j	   d k s¢ t  d S(	   sz   
        Test setting the field_specifier attribute and updating the card image
        to reflect the new value.
        s    DP1     = 'NAXIS: 2' / A commentRÅ   Rt   s
   DP1.NAXIS1g       @s	   A comments!   DP1     = 'NAXIS1: 2' / A commentN(
   R   R<   RC   RÆ  R   R=   RD   RT   RA   R®   (   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_field_specifierO	  s    	c         C   s   t  j   } | j d d  | j d d  | d d k sB t  | d d k sX t  | d d k sn t  | d d k s t  d | k s t  d	 S(
   s   
        The keyword portion of an RVKC should still be case-insensitive, but
        the field-specifier portion should be case-sensitive.
        s   abc.defi   s   abc.DEFi   s   ABC.defs   aBc.defs   ABC.DEFs   ABC.dEfN(   R   R   Rx   R   (   R8   R9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt$   test_field_specifier_case_senstivity^	  s    c         C   sn   |  j  d d k s t  t |  j  d t  s5 t  |  j  d d k sN t  t |  j  d t  sj t  d S(   st   
        Returning a RVKC from a header via index lookup should return the
        float value of the card.
        i    g       @i   g      ð?N(   RÅ  R   RV  RŽ  (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_get_rvkc_by_indexm	  s    c         C   s   |  j  d d k s t  d S(   sa  
        Returning a RVKC just via the keyword name should return the full value
        string of the first card with that keyword.

        This test was changed to reflect the requirement in ticket
        https://aeon.stsci.edu/ssb/trac/pyfits/ticket/184--previously it required
        _test_header['DP1'] to return the parsed float value.
        RÂ  s   NAXIS: 2N(   RÅ  R   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_get_rvkc_by_keywordx	  s    
c         C   sR   |  j  d d k s t  t |  j  d t  s5 t  |  j  d d k sN t  d S(   s   
        Returning a RVKC via the full keyword/field-specifier combination
        should return the floating point value associated with the RVKC.
        s	   DP1.NAXISg       @s   DP1.AUX.1.COEFF.1g      @?N(   RÅ  R   RV  RŽ  (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt,   test_get_rvkc_by_keyword_and_field_specifier	  s    c            sz   t  j t   f d   d  t  j t   f d   d  y   j d Wn, t k
 ru } | j d d k sv t  n Xd S(   sš   
        Accessing a nonexistent RVKC should raise an IndexError for
        index-based lookup, or a KeyError for keyword lookup (like a normal
        card).
        c            s     j  |  S(   N(   RÅ  (   Rà   (   R8   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÌ   	  s    i   c            s     j  |  S(   N(   RÅ  (   RË   (   R8   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÌ   	  s    s
   DP1.AXIS.3i    s   Keyword 'DP1.AXIS.3' not found.N(   RU   RV   R  RÍ   RÅ  RÎ   R   (   R8   R    (    (   R8   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_access_nonexistent_rvkc	  s    c         C   sl   d |  j  d <|  j  d d k s& t  t |  j  d t  sB t  d |  j  d <|  j  d d k sh t  d S(   s9   A RVKC can be updated either via index or keyword access.i   i    s	   DP1.NAXISg      @gñ?s
   DP1.AXIS.1N(   RÅ  R   RV  RŽ  (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_rvkc	  s
    c         C   sP   t  j   } d | d <| d d k s, t  d | d <| d d k sL t  d S(   s;   Regression test for an issue that appeared after SVN r2412.i   s   D2IM1.EXTVERg      ð?i   g       @N(   R   R   R   (   R8   R»   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_update_rvkc_2§	  s
    

c         C   sž   t  j j d  } | j d k s' t  | j d k s< t  t  j d d  } | j d k sc t  | j d k sx t  t  j d d  } | j d k s t  | j d k sŽ t  d  S(   Ns    DP1     = 'NAXIS: 2' / A commentRÂ  s   NAXIS: 2s	   DP1.NAXISi   s
   NAXIS: 2.0g       @(   R   R<   RC   t
   rawkeywordR   t   rawvalue(   R8   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_raw_keyword_value°	  s    c         C   sR   |  j  j d d d d d |  j  d d k s5 t  |  j  d d k sN t  d	 S(
   s   
        It should be possible to insert a new RVKC after an existing one
        specified by the full keyword/field-specifier combination.RÂ  s	   AXIS.3: 1s	   a commentRe   s
   DP1.AXIS.2i   i   s
   DP1.AXIS.3N(   RÅ  Rx   R   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_rvkc_insert_afterœ	  s    c         C   s  |  j  d =t |  j   d k s% t  t |  j   d d k sD t  |  j  d d k s] t  t |  j   d d k s| t  |  j  d =t |  j   d k s¡ t  t |  j   d d k sÀ t  |  j  d d k sÙ t  t |  j   d d	 k sø t  |  j  d d k st  d
 S(   s   
        Deleting a RVKC should work as with a normal card by using the full
        keyword/field-spcifier combination.
        s
   DP1.AXIS.1i   i    s	   DP1.NAXISi   i   s
   DP1.AXIS.2i   s   DP1.NAUXN(   RÅ  R`   R   Rv   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_rvkc_deleteÇ	  s    

c         C   s  |  j  d } t | t j  s% t  g  | j D] } t |  j   ^ q/ d d g k s_ t  |  j  d } g  | j D] } t |  j   ^ qv d d g k sŠ t  |  j  d } g  | j D] } t |  j   ^ qœ d d	 d
 d g k só t  |  j  d } g  | j D] } t |  j   ^ q
d g k s7t  |  j  d } g  | j D] } t |  j   ^ qNd d g k s~t  d S(   s+   Test the keyword filter strings with RVKCs.s
   DP1.AXIS.*s   DP1     = 'AXIS.1: 1's   DP1     = 'AXIS.2: 2's   DP1.N*s   DP1     = 'NAXIS: 2's   DP1     = 'NAUX: 2's
   DP1.AUX...s   DP1     = 'AUX.1.COEFF.0: 0's   DP1     = 'AUX.1.POWER.0: 1's(   DP1     = 'AUX.1.COEFF.1: 0.00048828125's   DP1     = 'AUX.1.POWER.1: 1's	   DP?.NAXISs	   DP1.A*S.*N(   RÅ  RV  R   R   R   Rg   RA   R   (   R8   t   clR   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_pattern_matching_keysÜ	  s,    %%%%%c         C   s   |  j  d =t |  j   d k s% t  t |  j   d d k sD t  |  j  d d k s] t  t |  j   d d k s| t  |  j  d d k s t  d S(   s'   Deletion by filter strings should work.s	   DP1.A*...i   i    s	   DP1.NAXISi   s   DP1.NAUXN(   RÅ  R`   R   Rv   (   R8   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt"   test_pattern_matching_key_deletionú	  s    
c         C   s¡   |  j  d } g  | j D] } t |  j   ^ q d d d d d d g k sS t  | d } g  | j D] } t |  j   ^ qg d d d d g k s t  d	 S(
   sX   
        A card list returned via a filter string should be further filterable.
        s	   DP1.A*...s   DP1     = 'AXIS.1: 1's   DP1     = 'AXIS.2: 2's   DP1     = 'AUX.1.COEFF.0: 0's   DP1     = 'AUX.1.POWER.0: 1's(   DP1     = 'AUX.1.COEFF.1: 0.00048828125's   DP1     = 'AUX.1.POWER.1: 1's	   *.*AUX...N(   RÅ  Rg   RA   R   R   (   R8   RÖ  R   t   cl2(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt    test_successive_pattern_matching
  s    %
%c         C   s/   |  j  d } t |  d d g k s+ t  d S(   sl   
        The CardList.keys() method should return full keyword/field-spec values
        for RVKCs.
        s
   DP1.AXIS.*s
   DP1.AXIS.1s
   DP1.AXIS.2N(   RÅ  Rv   R   (   R8   RÖ  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_rvkc_in_cardlist_keys
  s    c         C   s5   |  j  d } t | j    d d g k s1 t  d S(   sv   
        The CardList.values() method should return the values of all RVKCs as
        floating point values.
        s
   DP1.AXIS.*g      ð?g       @N(   RÅ  Rv   Ry   R   (   R8   RÖ  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_rvkc_in_cardlist_values"
  s    c         C   sL   |  j  d } | j d j d k s) t  t | j d j t  sH t  d S(   s|   
        Individual card values should be accessible by the .value attribute
        (which should return a float).
        s
   DP1.AXIS.*i    g      ð?N(   RÅ  Rg   RD   R   RV  RŽ  (   R8   RÖ  (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_rvkc_value_attribute+
  s    c         C   sa  t  j   } d | d <d | d <d | k s2 t  d | k sD t  d | k sV t  | d d d g k sr t  t  j   } d | d <d | k s t  t | j d	  t d
  k s¿ t  t  j j d  } | j d k sæ t  | j	 d k sû t  | j
 d k st  t  j   } d | d <d | k s8t  t | j d	  t d  k s]t  d S(   s  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/183

        Ensures that cards with standard commentary keywords are never treated
        as RVKCs.  Also ensures that cards not stricly matching the RVKC
        pattern are not treated as such.
        s	   AXIS.1: 2Rd   s	   AXIS.2: 2s   HISTORY.AXISs   HISTORY.AXIS.1s   HISTORY.AXIS.2s    Date: 2012-09-19T13:58:53.756061s   HISTORY.Datei    s(   HISTORY Date: 2012-09-19T13:58:53.756061s*           'Date: 2012-09-19T13:58:53.756061'R;   s"   'Date: 2012-09-19T13:58:53.756061'Rs   s   FOO.Dates,   FOO     = 'Date: 2012-09-19T13:58:53.756061'N(   R   R   R   RA   Rg   R   R<   RC   R=   RD   RÆ  Rç   (   R8   R»   R   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_overly_permissive_parsing5
  s*    	


%		
c            s  t  j j d  } t  j j d  } t  j | | g      d d k sO t    d d k se t    d d k s{ t    d	 d
 k s t  d   k s£ t  d   k sµ t  d   k sÇ t  t j t   f d    t j t   f d    t j t   f d    d S(   sØ  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/184

        Ensures that looking up a RVKC by keyword only (without the
        field-specifier) in a header returns the full string value of that card
        without parsing it as a RVKC.  Also ensures that a full field-specifier
        is required to match a RVKC--a partial field-specifier that doesn't
        explicitly match any record-valued keyword should result in a KeyError.
        s   FOO     = 'AXIS.1: 2's   FOO     = 'AXIS.2: 4'Rs   s	   AXIS.1: 2i   s	   AXIS.2: 4s
   FOO.AXIS.1g       @s
   FOO.AXIS.2g      @s   FOO.AXISs	   FOO.AXIS.s   FOO.c              s     d S(   Ns   FOO.AXIS(    (    (   R»   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÌ   o
  s    c              s     d S(   Ns	   FOO.AXIS.(    (    (   R»   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÌ   p
  s    c              s     d S(   Ns   FOO.(    (    (   R»   (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÌ   q
  s    N(   Rs   i   (   R   R<   RC   R   R   RU   RV   RÍ   (   R8   R­  R®  (    (   R»   s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt"   test_overly_aggressive_rvkc_lookupZ
  s    c         C   s!  d d l  m } | j |  j d   } | j d d g  } d | k sO t  d | k sa t  | j d d g d d	 g  } d | k s t  d
 | k s£ t  t | j d   d k sÄ t  | j d d g d d	 d g  } d | k s÷ t  d
 | k s	t  t | j d   d k s*t  | j d d g d d g  } d | k sZt  d | k slt  d | k s~t  | j |  j d   } d | j d d g  k s·t  | j |  j d   } d | j d d g d t  k söt  d | j d d g d t	  k st  d S(   s9   Tests the basic functionality of the `fitsheader` script.i   (   t
   fitsheaders   zerowidth.fitst
   extensionss   AIPS FQs   EXTNAME = 'AIPS FQRÄ   t   keywordst   EXTNAMEs	   BITPIX  =s   
i   i   s	   EXTNAME =s   NAXIS*s	   NAXIS   =s	   NAXIS1  =s	   NAXIS2  =s
   test0.fitss   EXTNAME = 'SCIs   SCI,2s	   comp.fitss   XTENSION= 'IMAGEt
   compresseds   XTENSION= 'BINTABLEN(
   t   io.fits.scriptsRà  t   HeaderFormatterR   t   parseR   R`   t   splitRE   R   (   R8   Rà  t   hft   output(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_fitsheader_scripts
  s2    !!!c         C   s<  d d l  m } d d l m } |  j d  } | j |  } | j |  } | j d g  } t |  t | d j	  k s t
  | j d d d d	 g  } t |  t | d j	  t | d j	  t | d j	  k sæ t
  | j d d g  } t j | d
 | k  st
  t j | d d k  s9t
  | d | d d k d k s]t
  | j d d g d d g  } t |  d k st
  | d d d k s­t
  | d d d k sÇt
  | d d d k sát
  | j d d g  } | d k st
  | j d d g d d g  } | d k s8t
  d S(   s7   Tests the `--table` feature of the `fitsheader` script.i   (   R   (   Rà  s   zerowidth.fitsi    Rá  s   AIPS FQi   t   4t   filenameR²   RD   R=   Rã  Râ  i   t   DOES_NOT_EXISTN(   t   ioR   Rå  Rà  R   R   t   TableHeaderFormatterRç  R`   R9   R   Ri  R,   Rç   (   R8   R   Rà  t   test_filenamet   fitsobjt	   formattert   mytable(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   test_fitsheader_table_feature
  s2    %	>$(   Ro   Rp   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õ  (    (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyRÁ  ø  s2   		5						
		
				
			
						
	%		((*   t
   __future__R    R   R   R\   R*   Rï  R   R   RU   t   numpyRi  t   externR   t
   extern.sixR   R   R   R   t   extern.six.movesR	   R
   R   t   io.fits.verifyR   t   tests.helperR   R   R;   R   R   R   R9   R   t   utilR   R   R   R$   R.   R/   RÁ  (    (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_header.pyt   <module>   s<   "				
ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ¶