ó
šßÈ[c           @   s¥  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z d  d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z m Z m Z d
 d l m Z m Z d d l m Z d d l m  Z  y d  d l! Z! Wn e" k
 rAe# Z$ n Xe% Z$ d e  f d „  ƒ  YZ& d e  f d „  ƒ  YZ' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d S(   iÿÿÿÿ(   t   divisiont   with_statementN(   t   assert_equali   (   t   range(   t   fits(   t    AstropyPendingDeprecationWarning(   t   NUMPY_LT_1_12(   t   raisest   catch_warningst   ignore_warningsi   (   t   SUBTRACTIVE_DITHER_1t   DITHER_SEED_CHECKSUMi   (   t   comparerecords(   t   FitsTestCaset   TestImageFunctionsc           B   s˜  e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j	 j
 e j ƒ  d k o[ e d d ƒ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 e j	 j d e e f ƒ e j	 j d e f ƒ 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('   c         C   s  t  j ƒ  } | j d k s! t ‚ d | j k s6 t ‚ d | _ | j d k sT t ‚ | j d d k sm t ‚ t  j d d ƒ } | j d k s” t ‚ | j d d k s­ t ‚ t  j ƒ  } d | d <t  j d | d d ƒ } | j d k sð t ‚ | j d d k s	t ‚ d S(   s/   Like the test of the same name in test_table.pyt    t   EXTNAMEt   FOOt   namet   EVENTSt   headerN(   R   t   ImageHDUR   t   AssertionErrorR   t   Header(   t   selft   hdut   hdr(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_constructor_name_arg#   s    	
c         C   sx   t  j t  j ƒ  ƒ } | d j } d | d <t  j d | ƒ } t  j | ƒ } d | d j d <| d d k st t ‚ d S(   sµ   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/153

        Ensure that a header from one HDU is copied when used to initialize new
        HDU.
        i    s   labq01i3q_rawtag.fitst   FILENAMER   s   labq01i3q_flt.fitsN(   R   t   HDUListt
   PrimaryHDUR   R   (   R   t   ifdt   phdrt   primary_hdut   ofd(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_constructor_copies_header9   s    
c         C   sz   t  j |  j d ƒ ƒ } | j ƒ  t j t ƒ ( } | d j d  d … d  d … f Wd  QXt | j ƒ d k sv t	 ‚ d  S(   Ns
   test0.fitsi   i   ss   HDU not found, possibly because the index is out of range, or because the file was closed before all HDUs were read(
   R   t   opent   datat   closet   pytestR   t
   IndexErrort   strt   valueR   (   R   t   rt   exc_info(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt	   test_openL   s
    
'c         C   s¥   t  j |  j d ƒ ƒ } d d d d d d d d f g g  t d d ƒ D]$ } | d	 | d
 d d d d f ^ qF } z" | j d t ƒ | k s’ t ‚ Wd  | j ƒ  Xd  S(   Ns
   test0.fitsi    t   PRIMARYi   R   iŠ   R   i   t   SCIR   i=   i(   t   int16t   output(    (   i(   i(   (   R   R$   R%   R   t   infot   FalseR   R&   (   R   R+   t   xR2   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_open_2b   s    8"c         C   s€  t  j |  j d ƒ ƒ } | j ƒ  t j t ƒ  } | d Wd  QXt | j ƒ d k s] t	 ‚ t  j |  j d ƒ d t
 ƒ} | j ƒ  t | d t  j ƒ s¡ t	 ‚ t | ƒ d k s¹ t	 ‚ t j t ƒ  } | d Wd  QXt | j ƒ d k sô t	 ‚ t  j j st	 ‚ t
 t  j _ zZ t  j |  j d ƒ ƒ } | j ƒ  t | d t  j ƒ sSt	 ‚ t | ƒ d k skt	 ‚ Wd  t t  j _ Xd  S(   Ns
   test0.fitsi   ss   HDU not found, possibly because the index is out of range, or because the file was closed before all HDUs were readt   lazy_load_hdusi   i   s   list index out of range(   R   R$   R%   R&   R'   R   R(   R)   R*   R   R3   t
   isinstanceR   t   lent   confR6   t   True(   R   R+   R,   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_open_3n   s(    


c         C   sz  t  j d d g ƒ } t  j t  j d | ƒ g ƒ } d | d j k sL t ‚ | d j d k se t ‚ | d j | d j d k s‰ t ‚ d d d d d d d	 d	 f g } | j d
 t ƒ | k sÈ t ‚ | d | d k sâ t ‚ | d | d k sü t ‚ d | d _ | d j d d k s&t ‚ | j	 |  j
 d ƒ ƒ t  j |  j
 d ƒ ƒ   } | d j d k spt ‚ Wd QXd S(   sX  Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/151

        Tests that the EXTNAME keyword works with Primary HDUs as well, and
        interacts properly with the .name attribute.  For convenience
        hdulist['PRIMARY'] will still refer to the first HDU even if it has an
        EXTNAME not equal to 'PRIMARY'.
        R   t   XPRIMARYt   EXTVERi   R   i    R   i   R   R1   R.   t	   XPRIMARY2s	   test.fitsN(   R   R<   (   R=   i   (    (   R<   i   (   R   R   R   R   R   R   R   R2   R3   t   writetot   tempR$   (   R   t   prihdrt   hdulR2   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_primary_with_extname   s    	$!t   Windowst   reasons.   https://github.com/astropy/astropy/issues/5797c         C   sÂ  t  j |  j d ƒ ƒ c} | d j d d k s8 t ‚ | d j d d k sU t ‚ | d- j d d k sr t ‚ d | d j d	 <d
 j d „  | d j j d Dƒ ƒ d k s¶ t ‚ | d j j d d ƒ t j	 t
 | d j j d d ƒ t j	 t
 | d j j d d ƒ | d j j d d ƒ t j | d j d  d … d  d … f t j d d d g d d d g d d d g g d t j ƒƒ st ‚ t  j |  j d ƒ d d ƒa } | j | d ƒ | j | d ƒ | j ƒ  | d j d. d k sùt ‚ d | d j d/ <Wd  QX~ t j |  j d ƒ |  j d ƒ ƒ t  j |  j d ƒ d d ƒ5 } | d j d0 d k sst ‚ | j | d ƒ Wd  QX~ t j |  j d ƒ |  j d ƒ ƒ t  j |  j d ƒ d d ƒ¥ } | d j d  d! k sít ‚ d" | d j d  <| d j d1 d k st ‚ d | d j d2 <| j ƒ  | d =| j ƒ  | j | d ƒ | j |  j d ƒ ƒ Wd  QX~ Wd  QXt  j |  j d ƒ ƒ . } | j ƒ  | d j d3 d# k s¿t ‚ Wd  QXt j d4 d t j ƒ} t  j d% | d& d' ƒ } t j | j t j d( d( d( d( d( g d( d( d( d( d( g d( d( d( d( d( g g d t j ƒƒ sXt ‚ t  j d) | d j d% t j d d g d d* ƒƒ } d
 j d+ „  | j j d d$ !Dƒ ƒ d, k s¾t ‚ d  S(5   Ns
   test0.fitst   primaryt   naxisi    t   scii   t   detectorgZ×0©l!”Kt   xxxs   
c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R)   (   t   .0R4   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pys	   <genexpr>½   s    iýÿÿÿsò   EXPFLAG = 'NORMAL            ' / Exposure interruption indicator                
FILENAME= 'vtest3.fits'        / File name                                      
XXX     =            1.234E+56                                                  t   filenamet   fnamet   historyt   simplei   i   i]  i\  i[  i^  t   dtypes   test_new.fitst   modet   appendic   s   test_append.fitss   test_update.fitst   updatet   rootnamet	   U2EQ0201Tt   abci;  i   R%   R   R/   g      ð?R   t   int32c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R)   (   RK   R4   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pys	   <genexpr>1  s    sC  BITPIX  =                   32 / array data type                                
NAXIS   =                    1 / number of array dimensions                     
NAXIS1  =                    2                                                  
PCOUNT  =                    0 / number of parameters                           (   RH   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R$   R%   R   R   t   joint   cardst   rename_keywordR'   R   t
   ValueErrort   npt   array_equalt   arrayR0   R@   RR   t   flusht   ost   renameR?   t   readallt   onest   float32R   (   R   R+   t   nt   at   uR%   R   t   hdu2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_io_manipulation¬   sr    $&'!
!!

	
#(#c         C   s,   t  j |  j d ƒ d d ƒ} | j ƒ  d  S(   Ns
   test0.fitst   memmapi   (   R   R$   R%   R&   (   R   t   f1(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_memory_mapping7  s    c         C   sà   t  j ƒ  } t  j | ƒ } t ƒ   } | j ƒ  Wd  QXd } t | ƒ d k sU t ‚ | t | d j ƒ k st t ‚ t ƒ    } | j	 |  j
 d ƒ d ƒ Wd  QXd } t | ƒ d k s½ t ‚ | t | d j ƒ k sÜ t ‚ d  S(   Ns+   HDUList's 0th element is not a primary HDU.i   i   s   test_new2.fitst   fixsO   HDUList's 0th element is not a primary HDU.  Fixed by inserting one as 0th HDU.(   R   R   R   R   t   verifyR8   R   R)   t   messageR?   R@   (   R   R4   R   t   wt   text(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_verification_on_output<  s    c         C   s<  t  j |  j d ƒ ƒ } t j | d j dP d ƒ s; t ‚ t j | d j d d d  d  … f t j d d d	 d
 d d d d d d d g ƒ ƒ s— t ‚ t j | d j d d d d  … f t j d d d d d d d g ƒ ƒ sç t ‚ t j | d j d d d  d … f t j d d d	 d
 d d d d g ƒ ƒ s:t ‚ t j | d j d d d d … f t j d
 d d d d g ƒ ƒ s„t ‚ t j | d j d d d … d  d  … f t j d d d	 d
 d d d d d d d g d d d d d d d d d d d g d d  d! d" d# d$ d% d& d' d( d) g g ƒ ƒ s1t ‚ t j | d j d d  d  … d  d  … f d  d … d  d … f t j d* d+ d, g d- d. d/ g d d d	 g g ƒ ƒ s¬t ‚ | d j } t j | d j d d d … d  d … f | d d d … d  d … f ƒ s
t ‚ t j | d j d d d … d f | d d d … d f ƒ sOt ‚ t j | d j d d0 … d  d  … d  d  … f d  d … d  d … d  d … f t j d* d+ d, g d- d. d/ g d d d	 g g d1 d2 d3 g d4 d5 d6 g d7 d8 d9 g g d: d; d< g d= d> d? g d@ dA dB g g g ƒ ƒ s*t ‚ t j | d j d  d  … d  d  … d  d  … f d  d … d  d … d  d … f t j d dC g dD dE g g dF dG g dH dI g g dJ dK g dL dM g g g ƒ ƒ sÏt ‚ t j | d j d  d  … d d  d  … f | d  d  … d d  d  … f ƒ s t ‚ t j | d j d  d  … d d … d  d  … f | d  d  … d d … d  d  … f ƒ s}t ‚ t j | d j d d0 … d d  d  … f | d d0 … d d  d  … f ƒ sÎt ‚ t j | d j d d0 … d dN … d  d  … f | d d0 … d dN … d  d  … f ƒ s+t ‚ t j | d j d  d  … d  d  d … f | d  d  … d  d  d … f ƒ s|t ‚ t j | d j d  d  … dC d d g d f | d  d  … dC d d g d f ƒ sÓt ‚ t j t t	 t t t	 t	 t t t	 t g
 ƒ } t j | d j d  d  … | d  d  … f | d  d  … | d  d  … f ƒ sQt ‚ t j | d j d d0 … d d  d  … dO f | d d0 … d d  d  … dO f ƒ s¨t ‚ t j | d j dO d  d  d … f | dO d  d  d … f ƒ sít ‚ t j | d j dO dC d d g d f | dO dC d d g d f ƒ s8t ‚ d  S(Q   Ns   arange.fitsi    i   i   i   ie  i`  ia  ib  ic  id  if  ig  ih  ii  ij  i   i   iøÿÿÿik  il  im  in  io  ip  iq  ir  is  it  iu  iv  iw  ix  iy  iz  i{  i|  i}  i~  i  i€  iJ  iK  iL  iU  iV  iW  i   i¸  i¹  iº  iÃ  iÄ  iÅ  iÎ  iÏ  iÐ  i&  i'  i(  i1  i2  i3  i<  i=  i>  i   i   i   in   io   iy   iz   iÜ   iÝ   iç   iè   i   .(   i   i   i   (
   R   R$   R%   R\   R]   t   sectionR   R^   R:   R3   (   R   t   fst   datt
   bool_index(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_sectionN  sp    #9#-#0#'#*$6?QEN!N		Q]Q]Q,+)(QE&c         C   sí   t  j d g ƒ } t j | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ } | d j } | d j } t  j	 | d | d ƒ s‰ t
 ‚ t  j	 | d | d ƒ s© t
 ‚ t  j	 | d | d ƒ sÉ t
 ‚ t  j	 | d | d ƒ sé t
 ‚ d  S(	   Ni   s   test_new.fitsi    .(   .i    (   .i    (   i    .(   i    .(   R\   R^   R   R   R?   R@   R$   Rs   R%   R]   R   (   R   Rf   R   RB   t   secRu   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_section_data_single  s       c         C   sK  t  j d ƒ j d ƒ } t j | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ } | d } | d j } | j	 d  d  … d  d  … f | d  d  … d  d  … f k j
 ƒ  s³ t ‚ | j	 d d  d  … f | d d  d  … f k j
 ƒ  sî t ‚ | j	 d d  d  … f | d d  d  … f k j
 ƒ  s)t ‚ | j	 d  d  … d f | d  d  … d f k j
 ƒ  sdt ‚ | j	 d  d  … d f | d  d  … d f k j
 ƒ  sŸt ‚ | j	 d | d k j
 ƒ  sÂt ‚ | j	 d	 | d
 k j
 ƒ  såt ‚ | j	 d | d k j
 ƒ  st ‚ | j	 d | d k j
 ƒ  s+t ‚ | j	 d d … d d … f | d d … d d … f k j
 ƒ  srt ‚ | j	 d d … d d … f | d d … d d … f k j
 ƒ  s¹t ‚ | j	 d d … d d … f | d d … d d … f k j
 ƒ  s t ‚ | j	 d d … d d … f | d d … d d … f k j
 ƒ  sGt ‚ d  S(   Ni   i   s   test_new.fitsi    i   (   i   i   (   i    i    (   i    i    (   i    i   (   i    i   (   i   i    (   i   i    (   i   i   (   i   i   (   R\   t   aranget   reshapeR   R   R?   R@   R$   R%   Rs   t   allR   (   R   Rf   R   RB   t   dRu   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_section_data_square  s&    
G;;;;####GGGc         C   sR"  t  j d ƒ j d ƒ } t j | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ } | d } | d j } | j	 d  d  … d  d  … d  d  … f | d  d  … d  d  … d  d  … f k j
 ƒ  sÅ t ‚ | j	 d  d  … d  d  … f | d  d  … d  d  … f k j
 ƒ  st ‚ | j	 | k j
 ƒ  s)t ‚ | j	 d d  d  … d  d  … f | d d  d  … d  d  … f k j
 ƒ  svt ‚ | j	 d d  d  … d  d  … f | d d  d  … d  d  … f k j
 ƒ  sÃt ‚ | j	 d d d  d  … f | d d d  d  … f k j
 ƒ  st ‚ | j	 d d d  d  … f | d d d  d  … f k j
 ƒ  sEt ‚ | j	 d d d  d  … f | d d d  d  … f k j
 ƒ  s†t ‚ | j	 d d d  d  … f | d d d  d  … f k j
 ƒ  sÇt ‚ | j	 d d d  d  … f | d d d  d  … f k j
 ƒ  st ‚ | j	 d d d  d  … f | d d d  d  … f k j
 ƒ  sIt ‚ | j	 d | d	 k j
 ƒ  slt ‚ | j	 d
 | d k j
 ƒ  st ‚ | j	 d | d k j
 ƒ  s²t ‚ | j	 d | d k j
 ƒ  sÕt ‚ | j	 d | d k j
 ƒ  søt ‚ | j	 d | d k j
 ƒ  st ‚ | j	 d | d k j
 ƒ  s>t ‚ | j	 d | d k j
 ƒ  sat ‚ | j	 d | d k j
 ƒ  s„t ‚ | j	 d | d k j
 ƒ  s§t ‚ | j	 d | d k j
 ƒ  sÊt ‚ | j	 d | d k j
 ƒ  sít ‚ | j	 d  | d! k j
 ƒ  st ‚ | j	 d" | d# k j
 ƒ  s3t ‚ | j	 d$ | d% k j
 ƒ  sVt ‚ | j	 d& | d' k j
 ƒ  syt ‚ | j	 d( | d) k j
 ƒ  sœt ‚ | j	 d* | d+ k j
 ƒ  s¿t ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  s t ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  sAt ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  s‚t ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  sÃt ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  st ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  sEt ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  s†t ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  sÇt ‚ | j	 d  d  … d d f | d  d  … d d f k j
 ƒ  st ‚ | j	 d d  d  … d f | d d  d  … d f k j
 ƒ  sIt ‚ | j	 d d  d  … d f | d d  d  … d f k j
 ƒ  sŠt ‚ | j	 d d  d  … d f | d d  d  … d f k j
 ƒ  sËt ‚ | j	 d d  d  … d f | d d  d  … d f k j
 ƒ  s	t ‚ | j	 d d  d  … d f | d d  d  … d f k j
 ƒ  sM	t ‚ | j	 d d  d  … d f | d d  d  … d f k j
 ƒ  sŽ	t ‚ | j	 d  d  … d  d  … d f | d  d  … d  d  … d f k j
 ƒ  sÛ	t ‚ | j	 d  d  … d  d  … d f | d  d  … d  d  … d f k j
 ƒ  s(
t ‚ | j	 d  d  … d  d  … d f | d  d  … d  d  … d f k j
 ƒ  su
t ‚ | j	 d  d  … d d  d  … f | d  d  … d d  d  … f k j
 ƒ  sÂ
t ‚ | j	 d  d  … d d  d  … f | d  d  … d d  d  … f k j
 ƒ  st ‚ | j	 d  d  … d d  d  … f | d  d  … d d  d  … f k j
 ƒ  s\t ‚ | j	 d  d  … d  d  … d d … f | d  d  … d  d  … d d … f k j
 ƒ  sµt ‚ | j	 d  d  … d  d  … d d … f | d  d  … d  d  … d d … f k j
 ƒ  st ‚ | j	 d  d  … d  d  … d d … f | d  d  … d  d  … d d … f k j
 ƒ  sgt ‚ | j	 d  d  … d  d  … d d … f | d  d  … d  d  … d d … f k j
 ƒ  sÀt ‚ | j	 d  d  … d  d  … d d … f | d  d  … d  d  … d d … f k j
 ƒ  st ‚ | j	 d  d  … d  d  … d d … f | d  d  … d  d  … d d … f k j
 ƒ  srt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sËt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s$t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s}t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sÖt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s/t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sˆt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sát ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s:t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s“t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sìt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sEt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sžt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s÷t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sPt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s©t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s[t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s´t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sft ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s¿t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sqt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sÊt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s#t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s|t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sÕt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s.t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s‡t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sàt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s9t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s’t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sët ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sDt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  söt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sOt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s¨t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sZt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s³t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  set ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s¾t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  st ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  spt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sÉt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s"t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s{t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sÔt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s-t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s†t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sßt ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s8 t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  s‘ t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sê t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sC!t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sœ!t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sõ!t ‚ | j	 d d … d d … d d … f | d d … d d … d d … f k j
 ƒ  sN"t ‚ d  S(,   Ni   i   i   s   test_new.fitsi    i   (   i   i   i   (   i    i    i    (   i    i    i    (   i    i    i   (   i    i    i   (   i    i    i   (   i    i    i   (   i    i   i    (   i    i   i    (   i    i   i   (   i    i   i   (   i    i   i   (   i    i   i   (   i    i   i    (   i    i   i    (   i    i   i   (   i    i   i   (   i    i   i   (   i    i   i   (   i   i    i    (   i   i    i    (   i   i    i   (   i   i    i   (   i   i    i   (   i   i    i   (   i   i   i    (   i   i   i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i    (   i   i   i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R\   Rz   R{   R   R   R?   R@   R$   R%   Rs   R|   R   (   R   Rf   R   RB   R}   Ru   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_section_data_cube³  sô    
YGMMAAAAAA##################AAAAAAAAAAAAAAAMMMMMMYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYc         C   s[  t  j d ƒ j d ƒ } t j | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ } | d } | d j } | j	 d  d  … d  d  … d  d  … d  d  … f | d  d  … d  d  … d  d  … d  d  … f k j
 ƒ  s× t ‚ | j	 d  d  … d  d  … d  d  … f | d  d  … d  d  … d  d  … f k j
 ƒ  s0t ‚ | j	 d  d  … d  d  … f | d  d  … d  d  … f k j
 ƒ  swt ‚ | j	 | k j
 ƒ  s”t ‚ | j	 d d  d  … d  d  … d  d  … f | d d  d  … d  d  … d  d  … f k j
 ƒ  sót ‚ | j	 d d  d  … d d  d  … f | d d  d  … d d  d  … f k j
 ƒ  sFt ‚ | j	 d  d  … d  d  … d d  d  … f | d  d  … d  d  … d d  d  … f k j
 ƒ  s¥t ‚ | j	 d  d  … d d d  d  … f | d  d  … d d d  d  … f k j
 ƒ  søt ‚ | j	 d  d  … d  d  … d  d  … d f | d  d  … d  d  … d  d  … d f k j
 ƒ  sWt ‚ d  S(   Ni   i   s   test_new.fitsi    i   (   i   i   i   i   (   R\   Rz   R{   R   R   R?   R@   R$   R%   Rs   R|   R   (   R   Rf   R   RB   R}   Ru   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_section_data_four4  s    
kYG_S_Sc         C   s  t  j |  j d ƒ ƒ } | d } | d j } | j d d … d d … f | d d … d d … f k j ƒ  sv t ‚ | j d d d … f | d d d … f k j ƒ  s± t ‚ | j d d d … f | d d d … f k j ƒ  sì t ‚ | j d d … d f | d d … d f k j ƒ  s't ‚ | j d d … d f | d d … d f k j ƒ  sbt ‚ | j d | d k j ƒ  s…t ‚ | j d | d	 k j ƒ  s¨t ‚ | j d
 | d k j ƒ  sËt ‚ | j d | d k j ƒ  sît ‚ | j d d … d d … f | d d … d d … f k j ƒ  s5t ‚ | j d d … d d … f | d d … d d … f k j ƒ  s|t ‚ | j d d … d d … f | d d … d d … f k j ƒ  sÃt ‚ | j d d … d d … f | d d … d d … f k j ƒ  s
t ‚ t  j |  j d ƒ ƒ } | d } | j d d … d d … f | d d … d d … f k j ƒ  sst ‚ | j d d d … f | d d d … f k j ƒ  s®t ‚ | j d d d … f | d d d … f k j ƒ  sét ‚ | j d d … d f | d d … d f k j ƒ  s$t ‚ | j d d … d f | d d … d f k j ƒ  s_t ‚ | j d | d k j ƒ  s‚t ‚ | j d | d k j ƒ  s¥t ‚ | j d | d k j ƒ  sÈt ‚ | j d | d k j ƒ  sët ‚ | j d d … d d … f | d d … d d … f k j ƒ  s2t ‚ | j d d … d d … f | d d … d d … f k j ƒ  syt ‚ | j d d … d d … f | d d … d d … f k j ƒ  sÀt ‚ | j d d … d d … f | d d … d d … f k j ƒ  st ‚ | j st ‚ d S(   s÷   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/143

        This is like test_section_data_square but uses a file containing scaled
        image data, to test that sections can work correctly with scaled data.
        s
   scale.fitsi    Ni   i   (   i    i    (   i    i    (   i    i   (   i    i   (   i   i    (   i   i    (   i   i   (   i   i   (   i    i    (   i    i    (   i    i   (   i    i   (   i   i    (   i   i    (   i   i   (   i   i   (   R   R$   R%   Rs   R|   R   t   _data_loaded(   R   RB   R}   Ru   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_section_data_scaledF  s@    
G;;;;####GGGG
G;;;;####GGGGc         C   s„   t  j |  j d ƒ d t ƒ} | d j j t j d ƒ k sC t ‚ t  j |  j d ƒ ƒ } | d j j t j d ƒ k s€ t ‚ d  S(   Ns
   scale.fitst   do_not_scale_image_datai    s   >i2Rd   (   R   R$   R%   R:   RP   R\   R   (   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_do_not_scale_image_dataq  s    %c         C   s£   t  j |  j d ƒ d t j g  d d ƒƒt j d d g ƒ j d ƒ } t  j |  j d ƒ d | ƒt  j |  j d ƒ d t	 ƒ} | d j
 j d k sŸ t ‚ d	 S(
   s§   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/56
        (BZERO and BSCALE added in the wrong location when appending scaled
        data)
        s   test_new.fitsR%   RP   t   uint8id   t   uint16t   uinti   N(   R   R?   R@   R\   R^   t   zerost   astypeRR   R$   R:   R%   RP   R   (   R   R}   t   f(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_append_uint_dataw  s    !
c         C   sJ   t  j ƒ  } t  j t j j d d ƒ ƒ } | j d d d d d d ƒ d S(	   sT   
        Regression test for https://github.com/astropy/astropy/issues/6399
        id   t   typeR…   t   bscalei   t   bzeroi    N(   R   R   R   R\   t   randomt   randt   scale(   R   t   hdu1Rh   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt%   test_scale_with_explicit_bzero_bscale„  s    c   	   	   C   sã  xÜd D]Ô} d | d } | d k r9 t  j | ƒ } n  d j | ƒ } t  j d d | ƒ} | j | ƒ | t  j d d | ƒ8} t j d	 | ƒ } t  j | j	 | k ƒ s³ t
 ‚ | j	 j j d j | ƒ k s× t
 ‚ d
 | j k sì t
 ‚ | j d
 d | d k st
 ‚ d j | ƒ } | j |  j | ƒ ƒ t j |  j | ƒ d t ƒ‰ } | d } t  j | j	 | k ƒ s{t
 ‚ | j	 j j d j | ƒ k sŸt
 ‚ d
 | j k s´t
 ‚ | j d
 d | d k sÕt
 ‚ Wd QXq Wd S(   sÓ   
        Regression test for https://github.com/astropy/astropy/issues/2305

        This ensures that an HDU containing unsigned integer data always has
        the apppriate BZERO value in its header.
        i   i    i@   i   i   s   uint{}id   RP   R%   t   BZEROs   uint{}.fitsR‡   i    N(   i   i    i@   (   R\   t   uint64t   formatt   emptyt   fillRz   R   R   R|   R%   R   RP   R   R   R?   R@   R$   R:   (	   R   t   int_sizet   max_uintRP   t   arrt   uint_hduRL   RB   t   new_uint_hdu(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_uint_header_consistencyŽ  s*    $!!
$t	   from_filet   do_not_scalec   
      C   s§  t  j d d d ƒ} | rƒ t j | ƒ } d } | j |  j | ƒ ƒ t j |  j | ƒ d | ƒ } | d } | j } Wd QXn t j | d | ƒ} d | j k s­ t	 ‚ d	 | j k sÂ t	 ‚ | j d d
 k sÛ t	 ‚ | j d	 d k sô t	 ‚ | j d | _ | j d d k  st	 ‚ d | j k s2t	 ‚ d	 | j k sGt	 ‚ d } | j |  j | ƒ ƒ t j |  j | ƒ ƒ & }	 |	 d j d k j
 ƒ  st	 ‚ Wd QXd S(   s<  
        Regression test for https://github.com/astropy/astropy/issues/4974

        BZERO/BSCALE should be removed if data is converted to a floating
        point type.

        Currently excluding the case where do_not_scale_image_data=True
        because it is not clear what the expectation should be.
        id   RP   R†   s   unsigned_int.fitsRƒ   i    Nt   BSCALER”   i   i €  g      ð?t   BITPIXs   test_uint_to_float.fits(   R\   Rˆ   R   R   R?   R@   R$   R%   R   R   R|   (
   R   RŸ   R    R›   t   tmp_uintRL   RŠ   Rœ   t   _RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt5   test_uint_header_keywords_removed_after_bitpix_change³  s.    
	c         C   s™   t  j d	 d t  j ƒ} d | d <t j d | ƒ } d | j d <| j |  j d ƒ ƒ t j |  j d ƒ ƒ } t  j	 | d j
 d ƒ j ƒ  s• t ‚ d S(
   sh   Test image data with blank spots in it (which should show up as
        NaNs in the data array.
        i
   RP   iç  i   R%   t   BLANKs   test_new.fitsN(   i
   i
   (   R\   Rˆ   RW   R   R   R   R?   R@   R$   t   isnanR%   R|   R   (   R   R›   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_blanksí  s    
c         C   s&  t  j d d t  j ƒ} t j d | ƒ } d | j d <t ƒ  T } | j |  j d ƒ ƒ t	 | ƒ d k sq t
 ‚ d t | d	 j ƒ k s t
 ‚ Wd
 QXt ƒ   } t j |  j d ƒ ƒ ` } t	 | ƒ d k sÕ t
 ‚ d t | d	 j ƒ k sô t
 ‚ t  j | | d	 j k ƒ st
 ‚ Wd
 QXWd
 QXd
 S(   sü   
        Test that invalid use of the BLANK keyword leads to an appropriate
        warning, and that the BLANK keyword is ignored when returning the
        HDU data.

        Regression test for https://github.com/astropy/astropy/issues/3865
        i   RP   R%   i   R¦   s   test_new.fitsi   s!   Invalid 'BLANK' keyword in headeri    N(   R\   Rz   t   float64R   R   R   R   R?   R@   R8   R   R)   Ro   R$   R|   R%   (   R   R›   R   Rp   t   h(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_invalid_blanksü  s    	%c   	      C   s)  t  j d d t  j ƒ} t j d | ƒ } | j d d d ƒd | j d <d | j d	 <| j |  j	 d
 ƒ ƒ t j
 |  j	 d
 ƒ ƒ C } | d j } t  j | d ƒ s® t ‚ | j |  j	 d ƒ ƒ Wd QXt ƒ   } t j
 |  j	 d ƒ ƒ ^ } t | ƒ d k s	t ‚ d	 | d j k s"t ‚ | d j } t  j | d ƒ sHt ‚ Wd QXWd QXt j
 |  j	 d
 ƒ d t d d ƒ- } | d j } t  j | d ƒ s¡t ‚ Wd QXt j
 |  j	 d
 ƒ d t ƒ^ } | d j d	 d k såt ‚ | d j d d k st ‚ | d j d d k st ‚ Wd QXd S(   s‘  
        Test that when auto-rescaling integer data with "blank" values (where
        the blanks are replaced by NaN in the float data), that the "BLANK"
        keyword is removed from the header.

        Further, test that when using the ``scale_back=True`` option the blank
        values are restored properly.

        Regression test for https://github.com/astropy/astropy/issues/3865
        i   RP   R%   R0   R   g®Gáz®ó?i'  i    R¦   s	   test.fitss
   test2.fitsNt
   scale_backRQ   RS   Rƒ   R¡   (   R\   Rz   RW   R   R   R‘   R%   R   R?   R@   R$   R§   R   R   R8   R:   (	   R   R›   R   RB   R%   Rp   t   hdul2t   hdul3t   hdul4(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scale_back_with_blanks  s2    %c         C   s   t  j d ƒ d } t j d | ƒ } d | j d <| j |  j d ƒ ƒ t j |  j d ƒ ƒ } | d 7} | d j | k j	 ƒ  s‰ t
 ‚ d S(	   sU   Test use of the BZERO keyword in an image HDU containing float
        data.
        i
   i   R%   g      ð?R”   s   test_new.fitsN(   i
   i
   (   R\   Rˆ   R   R   R   R?   R@   R$   R%   R|   R   (   R   R›   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_bzero_with_floatsN  s    
c      	   C   s)  t  j |  j d ƒ ƒ } | d j } t ƒ  ! | j |  j d ƒ d t ƒWd QX| j ƒ  t  j |  j d ƒ ƒ } | d j | k j ƒ  s’ t	 ‚ | j ƒ  t  j |  j d ƒ ƒ } t ƒ  ! | j |  j d ƒ d t ƒWd QX| j ƒ  t  j |  j d ƒ ƒ } | d j | k j ƒ  s!t	 ‚ | j ƒ  t  j |  j d ƒ d t ƒ} | j |  j d ƒ d t d d ƒ| j ƒ  t  j |  j d ƒ ƒ } | d j } | j ƒ  t  j |  j d ƒ d	 d
 ƒ} | j ƒ  t  j |  j d ƒ ƒ } | d j | k j ƒ  st	 ‚ t  j |  j d ƒ ƒ } | j ƒ  d S(   s‹   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/84 and
        https://aeon.stsci.edu/ssb/trac/pyfits/ticket/101
        s   fixed-1890.fitsi    s   test_new.fitst	   overwriteNRƒ   t   output_verifyt	   silentfixRQ   RS   (
   R   R$   R%   R	   R?   R@   R:   R&   R|   R   (   R   RB   t	   orig_data(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt!   test_rewriting_large_scaled_image\  s:    
"


"

	


c         C   s²   |  j  d ƒ t j |  j d ƒ d d ƒA } | d j j ƒ  } | d j j ƒ  } | d =| | d _ Wd QXt j |  j d ƒ ƒ & } | | d j k j ƒ  s¨ t ‚ Wd QXd S(   sô   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/105

        Replacing the original header to an image HDU and saving should update
        the NAXISn keywords appropriately and save the image data correctly.
        s
   test0.fitsRQ   RS   i   s   NAXIS*N(	   t	   copy_fileR   R$   R@   R%   t   copyR   R|   R   (   R   RB   Rµ   t   hdr_copy(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_image_update_header…  s    	!c         C   sX  |  j  d ƒ t j |  j d ƒ ƒ j } t j d ƒ t j |  j d ƒ d d ƒj	 ƒ  | t j |  j d ƒ ƒ j k s~ t
 ‚ t j d ƒ t j |  j d ƒ d ƒ } | d j } | j	 ƒ  | t j |  j d ƒ ƒ j k sä t
 ‚ t j |  j d ƒ d d ƒ} | d j j t j d ƒ k s't
 ‚ | d j d d k sDt
 ‚ d	 | d j k s]t
 ‚ d
 | d j k svt
 ‚ | | d j k j ƒ  s•t
 ‚ d | d j _ | j	 ƒ  t j |  j d ƒ ƒ } | d j d k sàt
 ‚ | d j j t j d ƒ k st
 ‚ | d j d d k s"t
 ‚ d	 | d j k s;t
 ‚ d
 | d j k sTt
 ‚ d S(   sl  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/119
        (Don't update scaled image data if the data is not read)

        This ensures that merely opening and closing a file containing scaled
        image data does not cause any change to the data (or the header).
        Changes should only occur if the data is accessed.
        s
   scale.fitsi   RQ   RS   i    s   >f4R¢   iàÿÿÿR”   R¡   i*   i
   N(   i*   i
   (   i*   i
   (   R·   R`   t   statR@   t   st_mtimet   timet   sleepR   R$   R&   R   R%   RP   R\   R   R|   t   shape(   R   t   mtimeRB   Rµ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_open_scaled_in_update_mode˜  s0    "'
'%
%c      	   C   s˜  |  j  d ƒ t j |  j d ƒ d d d t ƒ^ } | d j d } | d j d } | d j d } | d j j ƒ  } d | d j d <Wd	 QXt j |  j d ƒ d
 t ƒ› } | d j d | k sÏ t ‚ | d j d | k sì t ‚ | d j d | k s	t ‚ t	 t
 j | | ƒ ƒ } | d j d | k j ƒ  sFt ‚ Wd	 QXt j |  j d ƒ ƒ . } | d j d | d k j ƒ  sŽt ‚ Wd	 QXd	 S(   s|   A simple test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/120

        The scale_back feature for image HDUs.
        s
   scale.fitsRQ   RS   R¬   i    R¢   R”   R¡   NRƒ   i   (   R·   R   R$   R@   R:   R   R%   R¸   R   t   intt   matht   floorR|   (   R   RB   t   orig_bitpixt
   orig_bzerot   orig_bscaleRµ   t
   zero_point(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scale_backË  s"    )c         C   sà   t  j |  j d ƒ ƒ 9 } | d j d | d _ | d j |  j d ƒ ƒ Wd QXt  j |  j d ƒ ƒ o } | d j d k s‡ t ‚ | d j d d k s¤ t ‚ d | d j k s½ t ‚ d | d j k sÖ t ‚ Wd QXd S(	   sX   
        Regression test for https://github.com/spacetelescope/PyFITS/issues/27
        s
   test0.fitsi   s	   test.fitsNt   NAXISi    t   NAXIS1t   NAXIS2(   R   R$   R%   t   NoneR?   R@   R   R   (   R   Rª   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_image_noneæ  s     c         C   s  t  j d d t  j ƒ} t j | ƒ } d | j d <| j |  j d ƒ ƒ t ƒ  J } t j	 |  j d ƒ ƒ ) } t  j
 | d j | k ƒ s“ t ‚ Wd QXWd QXt | ƒ d k s· t ‚ d	 } | t | d j ƒ k sÜ t ‚ d
 } | t | d j ƒ k st ‚ d S(   sã   
        Regression test for https://github.com/astropy/astropy/issues/2711

        If the BLANK keyword contains an invalid value it should be ignored for
        any calculations (though a warning should be issued).
        id   RP   t   nanR¦   s	   test.fitsi    Ni   s+   Invalid value for 'BLANK' keyword in headers   Invalid 'BLANK' keywordi   (   R\   Rz   R©   R   R   R   R?   R@   R   R$   R|   R%   R   R8   R)   Ro   (   R   R%   R   Rp   RB   t   msg(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_invalid_blankö  s    .c         C   s¸   t  j d d t  j ƒ} t j d | j ƒ  ƒ } | j d d ƒ | j |  j d ƒ ƒ t	 |  j d ƒ d ƒ  } | j
 ƒ  } Wd QXt j j | ƒ } t  j | d	 j | ƒ s´ t ‚ d S(
   sT   
        Regression test for https://github.com/astropy/astropy/issues/2710
        id   RP   R%   R   gš™™™™™ñ?s	   test.fitst   rbNi    (   R\   Rz   Rd   R   R   R¸   R‘   R?   R@   R$   t   readR   t
   fromstringt   allcloseR%   R   (   R   Rf   R   RŠ   t	   file_dataRB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scaled_image_fromfile  s    c         C   s(   t  j ƒ  } t j d ƒ } | | _ d S(   s4   
        Test data assignment - issue #5087
        i   N(   R   R   R\   Rz   R%   (   R   t   imt   ar(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_set_data  s    c         C   s“   t  j d d d t  j ƒ} t j d | j ƒ  ƒ } t j d | j ƒ  ƒ } | j d d d ƒ| j d d d ƒt  j | j | j ƒ s t	 ‚ d	 S(
   sT   
        Regression test for https://github.com/astropy/astropy/issues/4600
        id   iÈ   RP   R%   R0   RŽ   g     ÀX@ic   N(
   R\   Rz   R0   R   R   R¸   R‘   RÕ   R%   R   (   R   Rf   R’   Rh   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scale_bzero_with_int_data(  s    c         C   s“   t  j d d d t  j ƒ} t j | ƒ j |  j d ƒ ƒ t j |  j d ƒ d d d t ƒ/ \ } d | j	 (t  j
 | j	 d ƒ s‰ t ‚ Wd	 QXd	 S(
   sŸ   
        Extend fix for #4600 to assignment to data

        Suggested by:
        https://github.com/astropy/astropy/pull/4602#issuecomment-208713748
        id   iÈ   RP   s	   test.fitsRQ   RS   R¬   i    N(   R\   Rz   R†   R   R   R?   R@   R$   R:   R%   RÕ   R   (   R   Rf   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scale_back_uint_assignment7  s    
(-   t   __name__t
   __module__R   R#   R-   R5   R;   RC   R'   t   markt   xfailt   platformt   systemR   Ri   Rl   Rr   Rw   Ry   R~   R   R€   R‚   R„   R‹   R“   Rž   t   parametrizeR3   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_image.pyR   "   sH   					"	"Š			B					+			
	%$9			5		)		3							t   TestCompressedImagec           B   sV  e  Z d  „  Z e j j d1 e g  d2 D]‹ Z e j	 d3 d	 e j
 ƒd
 d e f e j	 d4 d	 e j
 ƒd d e f e j	 d5 d	 e j
 ƒd d e f e j	 d6 ƒ d d d e f g ^ q% g  ƒ ƒ d „  ƒ Z e j j d ƒ d „  ƒ Z e e ƒ d „  ƒ Z e e ƒ 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& e j j d7 d. e j' e j
 f d. e j( e j
 f d. e j) e j* f d/ e j' e j
 f d/ e j( e j
 f d/ e j) e j* f g ƒ d0 „  ƒ Z+ RS(8   c         C   sW  t  j ƒ  } | j d k s! t ‚ | j |  j d ƒ ƒ t  j |  j d ƒ d d ƒs } t | ƒ d k sp t ‚ t	 | d t  j ƒ sŒ t ‚ | d j d k s¥ t ‚ t
 j d d t
 j ƒ| d _ Wd QXt  j |  j d ƒ ƒ o } t | ƒ d k sý t ‚ t	 | d t  j ƒ st ‚ t
 j | d j t
 j d d t
 j ƒk ƒ sMt ‚ Wd QXd S(	   sT   
        Regression test for https://github.com/astropy/astropy/issues/2595
        s	   test.fitsRQ   RS   i   i   id   RP   N(   R   t   CompImageHDUR%   RÍ   R   R?   R@   R$   R8   R7   R\   Rz   RW   R|   (   R   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt
   test_emptyH  s    !%R%   t   compression_typet   quantize_levelt
   byte_ordert   <t   >i   i
   RP   t   RICE_1i   t   GZIP_1g{®Gáz„¿t   GZIP_2id   i   t   HCOMPRESS_1c   	      C   sR  | j  | ƒ } t j ƒ  } t j | ƒ } t j | d d d | d | ƒ} | j | ƒ | j |  j d ƒ d t ƒ| j	 ƒ  t j
 |  j d ƒ ƒ ¶ } | d j | k j ƒ  s¸ t ‚ | d j d | j d k sÜ t ‚ | d j d	 | j d	 k s t ‚ | d j d
 | j d
 k s$t ‚ | d j d | j d k sHt ‚ Wd  QXd  S(   NR   R/   t   compressionTypet   quantizeLevels   test_new.fitsR²   i   RÊ   RË   RÌ   R¢   (   t   newbyteorderR   R   R   Rå   RR   R?   R@   R:   R&   R$   R%   R|   R   R   (	   R   R%   Rç   Rè   Ré   R!   R"   t   chdut   fd(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_comp_image_  s    		
$$$s   not HAS_SCIPYc      
   C   sà  d d l  } t j j d ƒ | j j ƒ  t j j d d ƒ d } t j | ƒ j	 |  j
 d ƒ ƒ t j | d d d	 d
 d d d d ƒj	 |  j
 d ƒ ƒ t j | d d d	 d
 d d d d ƒj	 |  j
 d ƒ ƒ t j |  j
 d ƒ ƒ } t j |  j
 d ƒ ƒ } t j |  j
 d ƒ ƒ } t j | | ƒ s0t ‚ t j t j | | ƒ d d d ƒs[t ‚ t j t j | | ƒ d d d ƒs†t ‚ t j t j | | ƒ d d d ƒs±t ‚ t j t j | | ƒ d d d ƒsÜt ‚ d S(   s€   
        Regression test for https://github.com/astropy/astropy/issues/5969

        Test that quantize_level is used.

        iÿÿÿÿNi*   i   i
   s   im1.fitsRç   Rì   t   quantize_methodi   Rè   t   dither_seedi   s   im2.fitsiœÿÿÿs   im3.fitsg      à¿t   atolgü©ñÒMbP?g      à?iÎÿÿÿgš™™™™™¹?i2   (   t
   scipy.miscR\   R   t   seedt   misct   ascentt   randnR   R   R?   R@   Rå   t   getdataR]   R   t   iscloset   mint   max(   R   t   scipyR%   t   im1t   im2t   im3(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_comp_image_quantize_levelx  s$    &+++c         C   sM   t  j t t j t j d d t j ƒd d d d d d	 d
 d d d g ƒd S(   s   
        Tests compression with the HCOMPRESS_1 algorithm with data that is
        not 2D and has a non-2D tile size.
        i   i
   RP   R   R/   Rð   Rï   Rñ   i   t   tileSizeN(   i   i
   i
   (   R'   R   R[   R   Rå   R\   Rˆ   Rd   (   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt+   test_comp_image_hcompression_1_invalid_data–  s    c         C   s»   t  j d d t  j ƒj d ƒ } t j d | d d d d	 d
 d d d d d g ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ 3 } t  j	 | d j
 | ƒ j ƒ  d k  s± t ‚ Wd QXd S(   s  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/171

        Tests that data containing more than two dimensions can be
        compressed with HCOMPRESS_1 so long as the user-supplied tile size can
        be flattened to two dimensions.
        i,  RP   i   i
   R%   R   R/   Rð   Rï   Rñ   i   R  i   i   s	   test.fitsg      ð?g      .@N(   i   i
   i
   g±?(   R\   Rz   Rd   R{   R   Rå   R?   R@   R$   t   absR%   R  R   (   R   t   cubeR   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt%   test_comp_image_hcompress_image_stack¢  s    
!c         C   s?  t  j d ƒ j d d ƒ } | d j d ƒ j ƒ  d d } t j d | d t d	 t ƒ } | j	 |  j
 d
 ƒ ƒ t j |  j
 d
 ƒ ƒ ± } t | d t j ƒ s§ t ‚ d | d j k sÀ t ‚ | d j d d k sÝ t ‚ d | d j k sö t ‚ | d j d | k st ‚ t  j | d j | k ƒ s5t ‚ Wd QXd S(   sF  
        Regression test for https://github.com/spacetelescope/PyFITS/issues/32

        Ensure that when floating point data is compressed with the
        SUBTRACTIVE_DITHER_1 quantization method that the correct ZDITHER0 seed
        is added to the header, and that the data can be correctly
        decompressed.
        g      Y@i
   i    R…   i'  i   R%   Rö   R÷   s	   test.fitst   ZQUANTIZR
   t   ZDITHER0N(   R\   Rz   R{   t   viewt   sumR   Rå   R
   R   R?   R@   R$   R7   R   t   _headerR|   R%   (   R   R^   t   csumR   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_subtractive_dither_seed·  s    
!	c         C   s¾   t  ƒ  r t j d ƒ t j |  j d ƒ d t ƒ@ } t | d t j ƒ sT t	 ‚ t | d t j
 ƒ sq t	 ‚ Wd  QXWd  QXt j |  j d ƒ ƒ # } t | d t j
 ƒ s´ t	 ‚ Wd  QXd  S(   Nt   errors	   comp.fitst   disable_image_compressioni   (   R   t   warningst   simplefilterR   R$   R%   R:   R7   t   BinTableHDUR   Rå   (   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_disable_image_compressionÐ  s    
)c         C   s‚   |  j  d ƒ t j |  j d ƒ ƒ j } t j d ƒ t j |  j d ƒ d d ƒj	 ƒ  | t j |  j d ƒ ƒ j k s~ t
 ‚ d S(   s¾   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/167

        Similar to test_open_scaled_in_update_mode(), but specifically for
        compressed images.
        s	   comp.fitsi   RQ   RS   N(   R·   R`   R»   R@   R¼   R½   R¾   R   R$   R&   R   (   R   RÀ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt#   test_open_comp_image_in_update_modeÞ  s
    	"c      
   C   s  t  j |  j d ƒ d t ƒC } t  j d | d j d | d j ƒ } | j |  j d ƒ ƒ Wd QXt j	 |  j d ƒ ƒ j
 } t j d ƒ t  j |  j d ƒ d d	 ƒj ƒ  | t j	 |  j d ƒ ƒ j
 k sÔ t ‚ t j d ƒ t  j |  j d ƒ d	 ƒ } | d j | j ƒ  | t j	 |  j d ƒ ƒ j
 k s8t ‚ t  j |  j d ƒ d d	 ƒ} | d j j t j d
 ƒ k s{t ‚ | d j d d k s˜t ‚ d | d j k s±t ‚ d | d j k sÊt ‚ d | d j _ | j ƒ  t  j |  j d ƒ ƒ } | d j d k st ‚ | d j j t j d
 ƒ k s:t ‚ | d j d d k sWt ‚ d | d j k spt ‚ d | d j k s‰t ‚ d S(   sË   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/88 2

        Identical to test_open_scaled_in_update_mode() but with a compressed
        version of the scaled image.
        s
   scale.fitsRƒ   R%   i    R   Ni   RQ   RS   Rd   R¢   iàÿÿÿR”   R¡   i*   i
   (   i*   i
   (   i*   i
   (   R   R$   R%   R:   Rå   R   R?   R@   R`   R»   R¼   R½   R¾   R&   R   RP   R\   R¿   (   R   RB   Ró   RÀ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt*   test_open_scaled_in_update_mode_compressedò  s6    
"'
'%
%c         C   sÍ   t  j |  j d ƒ ƒ ! } | d j |  j d ƒ ƒ Wd  QXt  j |  j d ƒ ƒ t } t  j |  j d ƒ ƒ S } t j | d j | d j k ƒ sš t ‚ t | d j	 | d j	 ƒ s½ t ‚ Wd  QXWd  QXd  S(   Ns	   comp.fitsi   s	   test.fits(
   R   R$   R%   R?   R@   R\   R|   R   R   t   compressed_data(   R   RB   t   hdul1R­   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt(   test_write_comp_hdu_direct_from_existing'  s     )c      
   C   sŒ  t  j |  j d ƒ d t ƒC } t  j d | d j d | d j ƒ } | j |  j d ƒ ƒ Wd QXt  j |  j d ƒ ƒ } | d j } t ƒ  ! | j |  j d	 ƒ d
 t ƒWd QX| j	 ƒ  t  j |  j d	 ƒ ƒ } | d j | k j
 ƒ  sõ t ‚ | j	 ƒ  t  j |  j d ƒ ƒ } t ƒ  ! | j |  j d	 ƒ d
 t ƒWd QX| j	 ƒ  t  j |  j d	 ƒ ƒ } | d j | k j
 ƒ  s„t ‚ | j	 ƒ  t  j |  j d ƒ d t ƒ} | j |  j d	 ƒ d
 t d d ƒ| j	 ƒ  t  j |  j d	 ƒ ƒ } | d j } | j	 ƒ  t  j |  j d	 ƒ d d ƒ} | j	 ƒ  t  j |  j d	 ƒ ƒ } | d j | k j
 ƒ  sft ‚ t  j |  j d	 ƒ ƒ } | j	 ƒ  d S(   s·   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/88 1

        Identical to test_rewriting_large_scaled_image() but with a compressed
        image.
        s   fixed-1890.fitsRƒ   R%   i    R   s   fixed-1890-z.fitsNi   s   test_new.fitsR²   R³   R´   RQ   RS   (   R   R$   R%   R:   Rå   R   R?   R@   R	   R&   R|   R   (   R   RB   Ró   Rµ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt,   test_rewriting_large_scaled_image_compressed1  sD    
"


"

	


c   	      C   sF  t  j |  j d ƒ d t ƒC } t  j d | d j d | d j ƒ } | j |  j d ƒ ƒ Wd QXt  j |  j d ƒ d d d	 t ƒ^ } | d
 j d } | d
 j d } | d
 j d } | d
 j j ƒ  } d | d
 j d <Wd QXt  j |  j d ƒ d t ƒ› } | d
 j d | k s%t	 ‚ | d
 j d | k sBt	 ‚ | d
 j d | k s_t	 ‚ t
 t j | | ƒ ƒ } | d
 j d | k j ƒ  sœt	 ‚ Wd QXt  j |  j d ƒ ƒ † } | d
 j d
 | d
 k j ƒ  sät	 ‚ t  j |  j d ƒ ƒ > } d | d j d <| d
 j | d j k j ƒ  s6t	 ‚ Wd QXWd QXd S(   s   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/88 3

        Identical to test_scale_back() but uses a compressed image.
        s
   scale.fitsRƒ   R%   i    R   NRQ   RS   R¬   i   R¢   R”   R¡   (   R   R$   R%   R:   Rå   R   R?   R@   R¸   R   RÂ   RÃ   RÄ   R|   (	   R   RB   Ró   RÅ   RÆ   RÇ   Rµ   RÈ   R­   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scale_back_compressedc  s0    )'c      	   C   s!  t  j j d d ƒ } t j d | d d ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ 3 } t  j | | d j	 ƒ j
 ƒ  d k sŠ t ‚ Wd	 QX~ t j d | d d d
 d ƒ } t ƒ  ! | j |  j d ƒ d t ƒWd	 QXt j |  j d ƒ ƒ & } | | d j	 k j ƒ  st ‚ Wd	 QXd	 S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/198t   sizeiè  R%   Rð   Rí   s	   test.fitsi   g        NRñ   R²   (   iè  iè  (   R\   R   t   normalR   Rå   R?   R@   R$   R	  R%   R  R   R	   R:   R|   (   R   t   noiset   chdu1Rª   t   chdu2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_lossless_gzip_compressionŒ  s    2	
"c         C   s9  t  j d d d t  j ƒd d d … t  j f t  j d d ƒ } t  j j d ƒ t  j j d d d f ƒ } | | d | j d … d | j d … f <t j	 | d d d d ƒ} | j
 |  j d ƒ ƒ t j |  j d ƒ d t ƒM } t j d | d j d ƒ st ‚ t j d | d j d ƒ s/t ‚ Wd QXd S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/199i   i   RP   i
   Ni   i9  R   i   i   i    Rð   Rì   R  s	   test.fitsR  s   ^1PB\(\d+\)$t   TFORM1t   TFORM2i   i   (   i   i   (   R\   Rz   Rd   t   newaxisR   Rú   t   uniformR¿   R   Rå   R?   R@   R$   R:   t   ret   matchR   R   (   R   t   data2t   data1Ró   Rª   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_compression_column_tforms¤  s    /*	#c         C   s^  |  j  d ƒ t j |  j d ƒ d d ƒE } t | d t j ƒ sJ t ‚ d | d j d <d | d j d <Wd QXt j |  j d ƒ ƒ s } d | d j k s¦ t ‚ | d j d d k sÃ t ‚ d | d j k sÜ t ‚ | d j d d k sù t ‚ Wd QXt j |  j d ƒ d d ƒ' } | d j } d	 | | j	 d
 ƒ <Wd QXt j |  j d ƒ ƒ $ } | d j d
 d	 k s~t ‚ Wd QXt j |  j d ƒ d d ƒ } d | d j d <Wd QXt j |  j d ƒ ƒ 6 } t
 | d j d j ƒ  ƒ d d g k st ‚ Wd QXt j |  j d ƒ d d ƒ4 } | d j } | j	 d
 ƒ } d | | | d +Wd QXt j |  j d ƒ ƒ 6 } t
 | d j d j ƒ  ƒ d d g k sªt ‚ Wd QXt j |  j d ƒ d d ƒ } d | d j d <Wd QXt j |  j d ƒ ƒ I } | d j d d d k s$t ‚ | d j d d d k sEt ‚ Wd QXt j |  j d ƒ d d ƒ8 } | d j } | d =| j	 d
 ƒ } | | | d 5Wd QXt j |  j d ƒ ƒ  } d | d j k s×t ‚ d | d j k sðt ‚ d
 | d j k s	t ‚ d
 | d j k s"t ‚ d | d j k s;t ‚ d | d j k sTt ‚ Wd QXd S(   sW   Regression test for
        https://github.com/spacetelescope/PyFITS/issues/23
        s	   comp.fitsRQ   RS   i   t   testt   test1t   test2Nt   foot   TEST1t   quxs   TEST*t   bari   s   I am fire. I am death!t   COMMENTt   TEST2(   R6  i   (   R·   R   R$   R@   R7   Rå   R   R   R  t   indext   listt   values(   R   RB   R   t   idx(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_compression_update_header·  sT    !#!#!5!5!!'!c         C   s{   d „  } t  j |  j d ƒ ƒ T } | d j } | | d d ƒ | | d d ƒ | | d d	 ƒ | | d
 d ƒ Wd QXd S(   sˆ   
        Ensure that setting reserved keywords related to the table data
        structure on CompImageHDU image headers fails.
        c         S   su   t  ƒ  f } | |  | <t | ƒ d k s. t ‚ t | d j ƒ j d j | ƒ ƒ sY t ‚ | |  k sk t ‚ Wd  QXd  S(   Ni   i    s   Keyword {!r} is reserved(   R   R8   R   R)   Ro   t
   startswithR–   (   R   t   keywordR*   Rp   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_set_keywordü  s    
s	   comp.fitsi   t   TFIELDSi   t   TTYPE1t   Foot   ZCMPTYPEt   ASDFt   ZVAL1N(   R   R$   R%   R   (   R   R?  RB   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt,   test_compression_update_header_with_reservedö  s    	c      
   C   sZ  t  j |  j d ƒ ƒ <} | d j } | d j } t ƒ  > } | j d ƒ t | ƒ d k sf t ‚ d | k sx t ‚ Wd  QX| j d d t	 ƒd | k s£ t ‚ | d d k s¹ t ‚ d | k sË t ‚ | d d k sá t ‚ | j d ƒ d	 | k s t ‚ | d	 d
 k st ‚ d	 | k s(t ‚ d | k s:t ‚ | d d
 k sPt ‚ Wd  QXd  S(   Ns	   comp.fitsi   R@  R   R5  R4  t   endiÿÿÿÿt   CHECKSUMt   abcd1234t   ZHECKSUM(   R   R5  R4  (   RH  RI  (
   R   R$   R%   R   R  R   RR   R8   R   R:   (   R   RB   t   imghdrt   tblhdrRp   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_compression_header_append  s$    c         C   s|   t  j |  j d ƒ ƒ ^ } | d j } x  t | ƒ d k  rJ | j ƒ  q+ W| j d ƒ | j d ƒ | j d ƒ Wd
 QXd
 S(   sY   
        Regresion test for issue https://github.com/astropy/astropy/issues/5827
        s	   comp.fitsi   iè  t   Q1_OSAVGs   [adu] quadrant 1 overscan meant   Q1_OSSTDs    [adu] quadrant 1 overscan stddevt   Q1_OSMEDs    [adu] quadrant 1 overscan medianN(   RN  i   s   [adu] quadrant 1 overscan mean(   RO  i   s    [adu] quadrant 1 overscan stddev(   RP  i   s    [adu] quadrant 1 overscan median(   R   R$   R%   R   R8   RR   (   R   RB   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_compression_header_append2!  s    c         C   s°  t  j |  j d ƒ ƒ ’} | d j } | d j } t ƒ  \ } | j d d ƒ t | ƒ d k si t ‚ d | k s{ t ‚ | j	 d ƒ d k s– t ‚ Wd  QX| j d d	 ƒ d | k s¾ t ‚ | j
 d ƒ | j
 d ƒ d k sæ t ‚ d | k sø t ‚ | j
 d ƒ | j
 d ƒ d k s t ‚ | j
 d ƒ } | j d d
 ƒ d | k sQt ‚ | j
 d ƒ | k slt ‚ d | k s~t ‚ | j
 d ƒ | j
 d ƒ d k s¦t ‚ Wd  QXd  S(   Ns	   comp.fitsi   iè  R@  t   TELESCOPt   OBSERVERs
   Phil PlaitR   (   RS  s
   Phil Plait(   R   (   R   R$   R%   R   R  R   t   insertR8   R   t   countR8  (   R   RB   RK  RL  Rp   R;  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_compression_header_insert/  s&    !((c         C   s  t  j |  j d ƒ ƒ c} | d j } | d j } t ƒ  { } | j d d d d d ƒt | ƒ d k sr t ‚ d | k s„ t ‚ | j	 d ƒ d k sŸ t ‚ | d d k sµ t ‚ Wd  QX| j d d	 d
 d ƒ| j
 d ƒ | j
 d ƒ d k sù t ‚ | d d	 k st ‚ | j
 d ƒ | j
 d ƒ d k s7t ‚ | d d	 k sMt ‚ | j
 d ƒ d k sht ‚ | j
 d ƒ d k sƒt ‚ | d d k s™t ‚ | j d d d d ƒ| j
 d ƒ | j
 d ƒ d k s×t ‚ | d d k sít ‚ | j
 d ƒ | j
 d ƒ d k st ‚ | d d k s+t ‚ | j
 d ƒ d k sFt ‚ | j
 d ƒ d k sat ‚ | d d k swt ‚ Wd  QXd  S(   Ns	   comp.fitsi   t   ZBITPIXiM   t   asdft   aftert   XTENSIONt   GCOUNTic   t   beforet   PCOUNTt   ZGCOUNTt   ZPCOUNTi   i   i   (   R   R$   R%   R   R  R   t   setR8   R   RU  R8  (   R   RB   RK  RL  Rp   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt(   test_compression_header_set_before_afterJ  s2    ((((c         C   s¨   t  j t j d g d t j ƒƒ } d | j d <| j d d g k sM t ‚ | j |  j d ƒ ƒ t  j	 |  j d ƒ ƒ ' } | d j d d g k sž t ‚ Wd QXd S(   sT   
        Regression test for https://github.com/astropy/astropy/issues/2363
        i    RP   s   hello worldR6  s	   test.fitsi   N(
   R   Rå   R\   R^   RW   R   R   R?   R@   R$   (   R   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt)   test_compression_header_append_commentaryj  s    $c         C   sÄ   t  j d d d ƒ} t  j d d d ƒ | d <t  j j d d ƒ | d <t j d | ƒ } | j |  j d	 ƒ ƒ t j	 |  j d	 ƒ ƒ 7 } | d } t  j
 | j d | d k ƒ sº t ‚ Wd
 QXd
 S(   sX   
        Regression test for https://github.com/spacetelescope/PyFITS/issues/71
        i   iX  RP   Rd   i    i   R   R%   s	   test.fitsN(   i   iX  (   R\   Rˆ   t   linspaceR   R!  R   Rå   R?   R@   R$   R|   R%   R   (   R   R›   R   RB   t   comp_hdu(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt!   test_compression_with_gzip_columnw  s    
c         C   s¹   t  j d d t  j ƒ} t j d | ƒ } | j } | j j d
 ƒ | j |  j d ƒ ƒ t j	 |  j d ƒ ƒ B } | | d j k s t
 ‚ | d j j d ƒ d k s¯ t
 ‚ Wd	 QXd	 S(   sP  
        Regression test for https://github.com/astropy/astropy/issues/2750

        Tests that the fake header (for the compressed image) can still be read
        even if the real header contained a duplicate ZTENSION keyword (the
        issue applies to any keyword specific to the compression convention,
        however).
        id   RP   R%   t   ZTENSIONt   IMAGEs	   test.fitsi   i   N(   Rf  Rg  (   R\   Rz   RW   R   Rå   R  RR   R?   R@   R$   R   RU  (   R   R›   R   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt*   test_duplicate_compression_header_keywords  s    
	c         C   s“   t  j d d d t  j ƒ} t j d | j ƒ  ƒ } t j d | j ƒ  ƒ } | j d d d ƒ| j d d d ƒt  j | j | j ƒ s t	 ‚ d	 S(
   së   
        Regression test for https://github.com/astropy/astropy/issues/4600
        and https://github.com/astropy/astropy/issues/4588

        Identical to test_scale_bzero_with_int_data() but uses a compressed
        image.
        id   iÈ   RP   R%   R0   RŽ   g     ÀX@ic   N(
   R\   Rz   R0   R   Rå   R¸   R‘   RÕ   R%   R   (   R   Rf   R’   Rh   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt)   test_scale_bzero_with_compressed_int_data§  s    	c         C   s˜   t  j d d d t  j ƒ} t j | ƒ j |  j d ƒ ƒ t j |  j d ƒ d d d t ƒ4 } d | d	 j	 (t  j
 | d	 j	 d ƒ sŽ t ‚ Wd
 QXd
 S(   sü   
        Extend fix for #4600 to assignment to data

        Identical to test_scale_back_uint_assignment() but uses a compressed
        image.

        Suggested by:
        https://github.com/astropy/astropy/pull/4602#issuecomment-208713748
        id   iÈ   RP   s	   test.fitsRQ   RS   R¬   i    i   N(   R\   Rz   R†   R   Rå   R?   R@   R$   R:   R%   RÕ   R   (   R   Rf   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt*   test_scale_back_compressed_uint_assignmentº  s    c         C   s—   t  j d d d t  j ƒ} t j | ƒ } | j j d ƒ t j t	 ƒ  | j
 Wd  QXt j | ƒ } | j j d ƒ t j t	 ƒ  | j
 Wd  QXd  S(   Nid   iÈ   RP   t   ZNAXISRW  (   R\   Rz   R†   R   Rå   R  t   popR'   R   t	   TypeErrorR  (   R   Rf   Rd  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt%   test_compressed_header_missing_znaxisÌ  s    R>  t   expectedR¡   R”   c         C   s«   d } t  j t j d d d | ƒƒ } | | j | <| j |  j d ƒ ƒ ~ t  j |  j d ƒ ƒ @ } | d j | | k s… t ‚ | d j	 j
 | k s¡ t ‚ Wd QXd S(   sÚ  
        If BSCALE,BZERO is set to floating point values, the image
        should be floating-point.

        https://github.com/astropy/astropy/pull/6492

        Parameters
        ----------
        keyword : `str`
            Keyword to set to a floating-point value to trigger
            floating-point pixels.
        dtype : `numpy.dtype`
            Type of original array.
        expected : `numpy.dtype`
            Expected type of uncompressed array.
        gê46¼ó?i    i
   RP   s	   test.fitsi   N(   R   Rå   R\   Rz   R   R?   R@   R$   R   R%   RP   (   R   R>  RP   Ro  R*   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_compressed_scaled_float×  s    !(   R%   Rç   Rè   Ré   (   Rê   Rë   (   i   i
   i
   (   i   i
   i
   (   i   i
   i
   (   id   id   (   R>  RP   Ro  (,   RÝ   RÞ   Ræ   R'   Rß   Rã   R  t   boR\   Rˆ   Rd   Rõ   t   skipifR  R	   R   R  R  R  R  R  R  R  R  R  R%  R.  R<  RF  RM  RQ  RV  Ra  Rb  Re  Rh  Ri  Rj  Rn  R…   R0   RW   R©   Rp  (    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyRä   G  sD   		§				5	
	2	)			?					 							$$c         C   s   |  j  d ƒ j } |  j  d ƒ j } t j j d ƒ d } t j ƒ  } t j t j | d d t ƒd t	 ƒ} d | j
 d <d	 | j
 d
 <t j | | g ƒ } | j | ƒ t j | ƒ } t j d | d j j t j ƒ d | d j
 ƒ | d <| j | ƒ t j | ƒ } | d j d ƒ d S(   s¯   
    Regression test for a bug that caused extensions that used BZERO and BSCALE
    that got turned into CompImageHDU to end up with BZERO/BSCALE before the
    TFIELDS.
    s
   3hdus.fitss   3hdus_comp.fitsid   i2   RP   R‡   ikO  R”   gffffff@R¡   R%   i   R   t	   exceptionN(   id   id   (   RX   t   strpathR\   R   R   R   R   R^   RÂ   R:   R   R   R?   R$   Rå   R%   R‰   t   uint32Rn   (   t   tmpdirt	   filename1t	   filename2R4   t   x0t   x1t   hdus(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_comphdu_bscale÷  s    ("c          C   s8   t  j t j d g d t j ƒƒ }  |  j d d ƒ d  S(   Ni   RP   RŽ   gÍÌÌÌÌÌô?(   R   R   R\   R^   RW   R‘   (   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_scale_implicit_casting  s    $c          C   sB   t  j j t  j j t ƒ d d ƒ }  t j |  ƒ d } | j d  S(   NR%   s   compressed_float_bzero.fitsi   (   R`   t   pathRX   t   dirnamet   __file__R   R$   R%   (   RL   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt&   test_bzero_implicit_casting_compressed  s    	c         C   sg   |  j  d ƒ j } t j t j d ƒ ƒ } d | j d <| j | d t ƒt j	 | ƒ } | j
 ƒ  d  S(   Ns   floatimg_with_bzero.fitsi
   R”   R²   (   i
   i
   (   RX   Rt  R   R   R\   Rˆ   R   R?   R:   R$   R2   (   Rv  RL   R   RB   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_bzero_mishandled_info/  s    c      
   C   s*  t  j d d d g ƒ } | j d t ƒ t j d | ƒ } | j ƒ  |  j d ƒ j } | j	 | ƒ t j
 | ƒ $ } t | d j d d d g ƒ Wd  QXt  j d d d	 g ƒ } | j d t ƒ t j d | ƒ } |  j d
 ƒ j } | j	 | ƒ t j
 | ƒ $ } t | d j d d d	 g ƒ Wd  QXd  S(   Ni   i   i   t   writeR%   s	   test.fitsg      ð?g       @g      @s
   test2.fits(   R\   R^   t   setflagsR3   R   R   t   add_datasumRX   Rt  R?   R$   R   R%   Rå   (   Rv  R4   t   ghduRL   t   hdulist(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   test_image_write_readonly<  s    
#(-   t
   __future__R    R   RÃ   R`   Rá   R*  R½   R  R'   t   numpyR\   t   numpy.testingR   t   extern.six.movesR   t   ioR   t   utils.exceptionsR   t   utils.compatR   t   tests.helperR   R   R	   t   hdu.compressedR
   R   t
   test_tableR   R   R   R  t   ImportErrorR3   t	   HAS_SCIPYR:   R   Rä   R|  R}  R  R‚  Rˆ  (    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_image.pyt   <module>   sF   
ÿ ÿ ÿ ÿ )ÿ ÿ ²					