ó
ßÈ[c           @  së  d  d l  m Z 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	 m Z y d  d l Z e Z Wn e k
 r£ e Z n Xd 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 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   Z+ d   Z, d e* f d     YZ- e j. d    Z/ d e* f d     YZ0 d e* f d     YZ1 d   Z2 d   Z3 d   Z4 d S(   iÿÿÿÿ(   t   divisiont   with_statementt   print_functionN(   t   chari   (   t   six(   t   ranget   zip(   t   cPickle(   t   fits(   t   catch_warningst   ignore_warnings(   t   NUMPY_LT_1_14_1(   t   AstropyDeprecationWarningi   (   t   Delayedt
   NUMPY2FITS(   t   decode_ascii(   t   VerifyErrori   (   t   FitsTestCasec         C  sÝ   |  } | } | j  j d k s0 | j  j d k r9 d } n d } d } t j | |  } | d k } | d k } t j |  r | | j   d k r t Sn  t j |  rÙ | | t j | |  j   | k rÙ t Sn  t S(   sÞ   
    Compare two float scalars or arrays and see if they are consistent

    Consistency is determined ensuring the difference is less than the
    expected amount. Return True if consistent, False if any differences.
    t   float32gíµ ÷Æ°>gŒØ²Ò<gñhãµøä>i    g        (   t   dtypet   namet   npt   absolutet   anyt   maxt   Falset   True(   t   at   bt   aat   bbt	   precisiont   difft   mask0t   masknz(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   comparefloats!   s     $	'c         C  s  t  |  j j  } t  | j j  } | | k r> t d  t SxHt |  D]:} |  j |  } | j |  } | j j d k r t |  } n  | j j d k r± t |  } n  t	 | t
 |   r&t	 | t
 |   r&t d t
 |  d |  t d t
 |  d |  t d j |   t St  |  rt	 | d t j  rt | |  st d	 |  t d
 |  t d j |   t SqK t	 | t j j  sµt	 | t j j  r?xÍ t t  |   D]p } t j | | | | k  rÈt d j | | |   t d j | | |   t d j | |   qÈqÈWqK t j | | k  rK t d	 |  t d
 |  t d j |   t SqK Wt S(   sÎ   
    Compare two record arrays

    Does this field by field, using approximation testing for float columns
    (Complex not yet handled.)
    Column names not compared, but column types and sizes are.
    s   number of fields don't matcht   Ss   type(fielda): s	    fielda: s   type(fieldb): s	    fieldb: s   field {0} type differsi    s   fielda: s   fieldb: s   field {0} differss   fielda[{0}]: {1}s   fieldb[{0}]: {1}s   field {0} differs in row {1}(   t   lenR   t   namest   printR   R   t   fieldR   R   t
   isinstancet   typet   formatR   t   floatingR#   R   t   columnt   _VLFR   R   (   R   R   t   nfieldsat   nfieldsbt   it   fieldat   fieldbt   row(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   comparerecords=   sJ    	
" t   TestTableFunctionsc           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 e j j 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! 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 d.   Z2 d/   Z3 d0   Z4 d1   Z5 d2   Z6 d3   Z7 d4   Z8 d5   Z9 d6   Z: d7   Z; d8   Z< d9   Z= d:   Z> d;   Z? d<   Z@ d=   ZA e j jB eC d>   d?    ZD e j jB eC d>   d@    ZE dA   ZF dB   ZG dC   ZH RS(D   c         C  s   t  j t  j   t  j   g  } | d j } d | d <t  j d |  } t  j |  } d | d j d <| d d k s 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.

        This is like the test of the same name in test_image, but tests this
        for tables as well.
        i   s   labq01i3q_rawtag.fitst   FILENAMEt   headers   labq01i3q_flt.fitsi    N(   R   t   HDUListt
   PrimaryHDUt   BinTableHDUR8   t   AssertionError(   t   selft   ifdt   thdrt   thdut   ofd(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_constructor_copies_headero   s    !
c         C  sz  t  j |  j d   } t  j |  j d   } t j d d d g  } t j d d d g d	 t j } t  j d
 d d d d |  } t  j d
 d d d d |  } t j d d d g d	 d } t  j d
 d d d d |  } t j d d d g d	 d }	 t  j d
 d d d d |	  }
 t j d7 d8 d9 g d	 d } t  j d
 d d d d |  } t j d g d g d g g d	 t j } t  j d
 d d d  d |  } t j d! d" d# g d	 d$ } t  j d
 d% d d& d |  } 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 d	 t j } t  j d
 d' d d( d |  } t  j	 | | | |
 | | | | g  } t  j
 j |  } t  j	 | d  } t  j
 j | d) d } t j j d: d; g d- d. } t | j |  st  | j d d | d k s:t  | j d d | d k s[t  | j d d | d k s|t  | j d d |	 d k st  | j d d | d k sŸt  | j d d | d j d/  k j   sît  | j d d0 | d k st  | j d d1 | d k j   s6t  t | j j d   d2 k sZt  t  j	 | d  } t  j t  j    } | j |  | j |  j d3  d4 t t  j |  j d3   Z } | d j j d1  } | d t t t t t t t t t t t g k j   st  Wd  QXt  j |  j d5  d6  } | j | d  | j |  | j   | j   | j   d  S(<   Ns   tb.fitss
   test0.fitst   abct   deft   xxg      &@g      (@g      *@R   R   R+   t   3At   arrayt   Ei   i   i   t   i2t   xyzt   Ii   i   t   t1y              @y              @y              @t   c8t   t2t   Ci    t   t3t   Xie   if   ig   t   i4t   t4t   Jt   t5t   11Xt   nrowsg   À@s   xy g   ÀÌÌ@R&   s   c1, c2, c3, c4t   booli   i   s   ['abc' 'def' 'xx']s   tableout1.fitst	   overwrites   tableout2.fitst   appendy      @      @y      @      @y      @      @(   i   RC   g   À@i    (   i   s   xy g   ÀÌÌ@i   (   R   t   opent   datat	   chararrayRG   R   R   t   Columnt   uint8t   ColDefsR;   t   from_columnst   recR5   R<   t   viewt   allt   strR(   R9   R:   RZ   t   writetot   tempR   R   t   close(   R=   t   ttt   fdt   a1t   r1t   c1t   c2t   a3t   c3t   a4t   c4t   a5t   c5t   a6t   c6t   a7t   c7t   a8RM   t   xt   tbhdut   x2RN   t   raRE   t   foutt   f2Rg   t   fout2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt	   test_open   sf    !**$6'	!!!!!0!'$*

c         C  sê  t  j |  j d   } | d j d d k s5 t  i	 d d d d g d	 6d d
 d d g d 6d d d d g d 6d d d d g d 6d d d d g d 6d d d d g d 6d d d d g d 6d d d d g d 6d d d d g d 6} | d j j d t  | k st  t j	 j
 d' d( g d$ d% } t | d j | d!   sIt  d | d j j d  d  <| d j j   t t j	 j j | d j d   d& k s¥t  | d j j d   t j
 d d! g  k j   sÜt  | j   d  S()   Ns   tb.fitsi   t   tform1t   1JRm   Rn   Rp   Rr   R   RF   t   1Et   1LR+   t    t   uniti  t   nulli   t   bscalegÙ?t   bzerot   I11t   A3s   G15.7t   L6t   dispt   startt   dimt   outputRC   g   À@i    i   s   xy g   ÀÌÌ@R&   s   c1, c2, c3, c4s   [84 84](   i   RC   g   À@i    (   i   s   xy g   ÀÌÌ@i   (   R   R[   R\   R8   R<   t   columnst   infoR   R   Rb   RG   R5   R(   t   _scale_backRe   t   recarrayRd   Rh   (   R=   t   tR   R}   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_binary_tableÜ   s*    %	 17c      	   C  s  t  j |  j d   } t j j d) d* d+ d, d- g d d } t | d j |  s[ t  | d j d d } t j j d. g d d } t | |  s  t  | j d  t j d g  k j	   sÍ t  t j j d/ d0 d1 g d d } t | d j d  d  d  |  st  t
 j d d g  } t j d d g  } t  j d d d d d d d |  } t  j d d d d d d d |  }	 t  j d d d d d d d  d! g  }
 t  j j |	 | |
 g  } t | j j j  i t j d"  d# f d 6t j d$  d f d 6t j d%  d& f d 6k s.t  | j |  j d'  d( t t  j |  j d'   } t | j | d j  st  | j   | j   d  S(2   Ns
   ascii.fitsg   àù>$@i%   g   ÀÌÌ@i   g   àQ8/@i   g        i    g     u@iY  R&   s   c1, c2i   i   t   abcdRD   g      &@g      (@R   RC   R+   R   R   i   RG   RH   i   RL   RK   i[   i\   i]   s   |S3i   s   |S15s   |S10i   s	   toto.fitsRY   (   g   àù>$@i%   (   g   ÀÌÌ@i   (   g   àQ8/@i   (   g        i    (   g     u@iY  (   g     u@iY  (   g   àù>$@i%   (   g   àQ8/@i   (   g     u@iY  (   R   R[   R\   R   Rb   RG   R5   R<   R(   Rd   R]   R^   t   TableHDURa   t   dictR   t   fieldsRf   Rg   R   Rh   (   R=   R   t   ra1t   a2t   ra2t   ra3Rk   Rl   Rm   Rn   Rp   t   hdut   hdul(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_ascii_tableÿ   sB    	-			)$$'"
c   
      C  s  t  j d d t } t  j d g d d } | | d <t j d d d d	 d
 |  } t j | g  } t j j |  } d | _	 | j
 |  j d  d t t j |  j d   } | d } | j } | j d  d }	 | |	 k j   sô t  | j   d  S(   Ni   R   i   R_   i    R   t   ChannelsR+   s   PB()RG   t   RFIs   testendian.fitsRY   (   i   (   R   t   ndarrayt   objectRG   R   R^   R`   R;   Ra   R   Rf   Rg   R   R[   R\   R(   Rd   R<   Rh   (
   R=   Rz   t
   channelsInt   colt   colsR{   t   hduLt   rfiHDUR\   t   channelsOut(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_endianness-  s    
	
	c   	      C  sd  d d d d g } t  j | d d } t  j | d d } t j d d	 d
 d d |  } t j d d d
 d d |  } t j | | g  } t j j |  } | j d	 | k j   sŸ t	  | j d | k j   sÝ t	  | j
 |  j d  d t t j |  j d   M } | d j d	 | k j   s7t	  | d j d | k j   sZt	  Wd QXd S(   sŠ   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/77
        (Astropy doesn't preserve byte order of non-native order column arrays)
        g      ð?g       @g      @g      @R   s   <f8s   >f8R   R   R+   t   DRG   R   s   testendian.fitsRY   i   N(   R   RG   R   R^   R`   R;   Ra   R\   Rd   R<   Rf   Rg   R   R[   (	   R=   R   Rk   R   t   col1t   col2R©   R{   R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_column_endianness=  s    #c         C  sË   t  j j d d d g d d d d } t j |  } t | j |  sN t  | j |  j	 d  d t
 t j |  j	 d   } t | j | d j  s¡ t  t | | d j  sœ t  | j   d  S(   Ni   t   Seriusg333333÷¿t   A1Vi   t   Canopysg\Âõ(\ç¿t   F0Ibi   s
   Rigil Kentg¹¿t   G2Vt   formatss   int16,a20,float32,a10R&   s   order,name,mag,Sps	   toto.fitsRY   (   i   R²   g333333÷¿R³   (   i   RŽ   g\Âõ(\ç¿Rµ   (   i   s
   Rigil Kentg¹¿R¶   (   R   Rb   RG   R   R;   R5   R\   R<   Rf   Rg   R   R[   Rh   (   R=   t   brightR    R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_recarray_to_bintablehduV  s    			c         C  sç   t  j i d d d d g d 6d d d d	 g d
 6 } t  j d d d g d | } t j |  } t | j | j t j   s t	  | j
 |  j d  d t t j |  j d   } t | j | d j  sÙ t	  | j   d  S(   Nt   orderR   t   magt   SpR&   t   intt   S20R   t   S10R·   i   R²   g333333÷¿R³   i   RŽ   g\Âõ(\ç¿Rµ   i   s
   Rigil Kentg¹¿R¶   R   s	   toto.fitsRY   (   i   R²   g333333÷¿R³   (   i   RŽ   g\Âõ(\ç¿Rµ   (   i   s
   Rigil Kentg¹¿R¶   (   R   R   RG   R   R;   R5   R\   Rc   t   FITS_recR<   Rf   Rg   R   R[   Rh   (   R=   t   descR   R    R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_numpy_ndarray_to_bintablehdue  s    	$c         C  sç   t  j i d d d d g d 6d d d d	 g d
 6 } t  j d d d g d | } t j |  } t | j | j t j   s t	  | j
 |  j d  d t t j |  j d   } t | j | d j  sÙ t	  | j   d  S(   NRº   R   R»   RŒ   R&   Rœ   t   U20R   t   U10R·   i   u   Seriusg333333÷¿u   A1Vi   u   Canopysg\Âõ(\ç¿u   F0Ibi   u
   Rigil Kentg¹¿u   G2VR   s	   toto.fitsRY   (   i   u   Seriusg333333÷¿u   A1V(   i   u   Canopysg\Âõ(\ç¿u   F0Ib(   i   u
   Rigil Kentg¹¿u   G2V(   R   R   RG   R   R;   R5   R\   Rc   RÀ   R<   Rf   Rg   R   R[   Rh   (   R=   RÁ   R   R    R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt.   test_numpy_ndarray_to_bintablehdu_with_unicoder  s    	$c         C  s«  t  j j d d d g d d d d } t j j | d d } t | j j j	 d j  t | j j j
 d  k sz t  t | j j j	 d j  t | j	 j	 d j  k sµ t  t | j j j	 d j  t | j	 j
 d  k sí t  d | j d d <| j d d d k st  | j j j
 d d d k s>t  | j j j	 d j d d k sdt  | j	 j
 d d d k st  | j	 j	 d j d d k s§t  d | j j j
 d d <| j d d d k sÛt  | j j j
 d d d k sþt  | j j j	 d j d d k s$t  | j	 j
 d d d k sDt  | j	 j	 d j d d k sgt  d | j j j	 d j d <| j d d d k st  | j j j
 d d d k sÁt  | j j j	 d j d d k sçt  | j	 j
 d d d k st  | j	 j	 d j d d k s*t  d | j	 j
 d d <| j d d d k s[t  | j j j
 d d d k s~t  | j j j	 d j d d k s€t  | j	 j
 d d d k sÄt  | j	 j	 d j d d k sçt  d | j	 j	 d j d <| j d d d k st  | j j j
 d d d k s>t  | j j j	 d j d d k sdt  | j	 j
 d d d k st  | j	 j	 d j d d k s§t  | j j d  t  j d d g d t  j k j   sãt  | j d d d k s t  | j d d d k st  | j j d  t  j d d g d t  j k j   sYt  | j d d	 d k svt  | j d d	 d k st  t   ! | j |  j d  d t Wd  QXt j |  j d   } | d j j d  t  j d d g d t  j k j   st  | d j d d d k s;t  | d j d d d k s\t  | d j j d  t  j d d g d t  j k j   st  | d j d d	 d k sœt  | d j d d	 d k sÞt  Wd  QX~ t j j | d d } t  j j d d g d d d d } t | j |  s;t  t   ! | j |  j d  d t Wd  QXt j |  j d   & } t | j | d j  s¡t  Wd  QXd  S(    Ni   R²   g333333÷¿R³   i   RŽ   g\Âõ(\ç¿Rµ   i   s
   Rigil Kentg¹¿R¶   R·   s   int16,a20,float64,a10R&   s   order,name,mag,SpRW   i    iÕ   id   iô  iX  i   R   s	   toto.fitsRY   (   i   R²   g333333÷¿R³   (   i   RŽ   g\Âõ(\ç¿Rµ   (   i   s
   Rigil Kentg¹¿R¶   (   i   R²   g333333÷¿R³   (   i   RŽ   g\Âõ(\ç¿Rµ   (   R   Rb   RG   R   R   Ra   t   idR\   t   _coldefsR   t   _arraysR<   R(   t   int16Rd   t   float64R
   Rf   Rg   R   R[   R;   R5   (   R=   Rž   R    R¡   t   tmp(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_new_table_from_recarray  s    		""#& ##& ##& ##& ##& #--
"-!!-!'		
"c         C  s   t  j |  j d   } | d j } t j d d d t f g d | j } t j | |  j t  j	  } t
 |  j d  s t  d S(	   sR   
        Tests creating a new FITS_rec object from a multi-field ndarray.
        s   tb.fitsi   i   t   qweg      @R   s	   FITS_rec(N(   R   R[   R\   R   RG   R   R   RZ   Rc   RÀ   t   reprt
   startswithR<   (   R=   t   hR\   t   new_datat   appended(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_new_fitsrecÙ  s
    'c         C  s7  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 |	 j |  j d   t  j d d d d g  } t  j d d  d! d" g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 |	 j |  j d#   t j	 |  j d   }
 t j	 |  j d#   } |
 d j
 j d } |
 d j
 j d | d j
 j d } |
 d j j d |
 d j j d j k sËt  t j j |
 d j d$ | } xG t t |
 d j   D], } | d j
 j |  | j
 j |  | )qW| j |  j d%   d d& d d' d( d8 d) d) f d9 g } t j |  j d%  d. t | k st  t  j d/ d/ d/ d/ d/ g d0 t  j } t  j j d d d) | t f d d d) | t f d d d) | t f d d d) | t f d d d) | t f d  d d) | t f d! d d) | t f d" d d) | t f g d1 d2 } t | j
 |  st  d3 | j
 d d <| j
 j j d d d3 k s³t  | j
 j j d j d d3 k sÙt  | j j d d d3 k sùt  | j j d j d d3 k st  | j
 d d d3 k s9t  d4 | j
 j j d d <| j
 j j d d d4 k sst  | j
 j j d j d d4 k st  | j j d d d4 k s¹t  | j j d j d d4 k sÜt  | j
 d d d4 k sùt  d5 | j
 j j d j d <| j
 j j d d d5 k s6t  | j
 j j d j d d5 k s\t  | j j d d d5 k s|t  | j j d j d d5 k st  | j
 d d d5 k sŒt  d6 | j j d d <| j
 j j d d d6 k sót  | j
 j j d j d d6 k st  | j j d d d6 k s9t  | j j d j d d6 k s\t  | j
 d d d6 k syt  d7 | j j d j d <| j
 j j d d d7 k s³t  | j
 j j d j d d7 k sÙt  | j j d d d7 k sùt  | j j d j d d7 k st  | j
 d d d7 k s9t  t j	 |  j d%   } | d } d3 | j
 d d <| j
 j j d d d3 k st  | j
 j j d j d d3 k sµt  | j j d d d3 k sÕt  | j j d j d d3 k søt  | j
 d d d3 k s	t  d4 | j
 j j d d <| j
 j j d d d4 k sO	t  | j
 j j d j d d4 k su	t  | j j d d d4 k s	t  | j j d j d d4 k sž	t  | j
 d d d4 k sÕ	t  d5 | j
 j j d j d <| j
 j j d d d5 k s
t  | j
 j j d j d d5 k s8
t  | j j d d d5 k sX
t  | j j d j d d5 k s{
t  | j
 d d d5 k s
t  d6 | j j d d <| j
 j j d d d6 k sÏ
t  | j
 j j d j d d6 k sõ
t  | j j d d d6 k st  | j j d j d d6 k s8t  | j
 d d d6 k sUt  d7 | j j d j d <| j
 j j d d d7 k st  | j
 j j d j d d7 k sµt  | j j d d d7 k sÕt  | j j d j d d7 k søt  | j
 d d d7 k st  |
 j   | j   | j   d  S(:   Ni8  iN  i4  i=  t   NGC1t   NGC2t   NGC3t   NCG4R   t   targetR+   t   10ARG   t   countsRT   R   t   DNt   notest   A10t   spectrumt   5Et   flagt   Li   i    s   table1.fitsi  i²  i  i¡  t   NGC5t   NGC6t   NGC7t   NCG8s   table2.fitsRW   s   newtable.fitst   PRIMARYR:   i   R   R;   i   s   8R x 5Cs   [10A, J, 10A, 5E, L]R   g        R   R·   s   a10,u4,a10,5f4,li,  iÈ   id   iZ   iP   (    (   i   R   i   R;   i   s   8R x 5Cs   [10A, J, 10A, 5E, L]R   (   R   RG   R   R^   R`   R;   Ra   Rf   Rg   R[   R\   t   shapeR   RÈ   R<   R   R%   R(   R   R   R   Rb   R   R5   RÇ   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   t   coldefsR{   RL   RN   t   nrows1RW   R    R1   R   t   zRG   R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_appending_a_columnè  sÜ    $*$*&1 * 	*'		#& ##& ##& ##& ##& #
#& ##& ##& ##& ##& #

c      
   C  s	  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | g  } t j j |  }	 |	 j j d
 d d d g k s#t	  | | }
 t j j |
  } | j j d
 d d d d g k sft	  t  j d d d d d g d t  j
 } t  j j d d d | t f d d d | t f d d d | t f d d d | t f g d d } t | j |  st	  d  S(   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    g        R   R   R·   s   a10,u4,a10,5f4,l(   R   RG   R   R^   R`   R;   Ra   R   R&   R<   R   Rb   R   R   R5   R\   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   t   coldefs1t   tbhdu1Rê   RG   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_adding_a_column|  s,    $*$
'		c         C  s  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 |	 j |  j d   t  j d d d d g  } t  j d d  d! d" g  } t j d	 d# d d d |  } t j d	 d$ d d d d d |  } t j d	 d% d d  } t j d	 d& d d  } t j d	 d' d d d d d d d g  } t j | | | | | g  } t j j |  }	 |	 j |  j d(   t j	 |  j d   }
 t j	 |  j d(   } t j j |
 d j
 | d j
  } t  j d) d) d) d) d) g d* t  j } t  j j d d d+ | t d d d+ | t f
 d d d+ | t d  d d+ | t f
 d d d+ | t d! d d+ | t f
 d d d+ | t d" d d+ | t f
 g d, d- } t | j |  s_t  | j |  j d.   d/ | j d d <| j j j d d d/ k s©t  | j j j
 d j d d/ k sÏt  | j
 j d d d/ k sït  | j
 j
 d j d d/ k st  | j d d d/ k s/t  d0 | j j j d d <| j j j d d d0 k sit  | j j j
 d j d d0 k st  | j
 j d d d0 k s¯t  | j
 j
 d j d d0 k sÒt  | j d d d0 k sït  d1 | j j j
 d j d <| j j j d d d1 k s,t  | j j j
 d j d d1 k sRt  | j
 j d d d1 k srt  | j
 j
 d j d d1 k st  | j d d d1 k s²t  d2 | j
 j d d <| j j j d d d2 k sét  | j j j
 d j d d2 k st  | j
 j d d d2 k s/t  | j
 j
 d j d d2 k sRt  | j d d d2 k sot  d3 | j
 j
 d j d <| j j j d d d3 k s©t  | j j j
 d j d d3 k sÏt  | j
 j d d d3 k sït  | j
 j
 d j d d3 k st  | j d d d3 k s/t  d d4 d d5 d6 d< d+ d+ f d= g } t j |  j d.  d; t | k s}t  t j	 |  j d.   } | d } | j
 j d
 d d d d d# d$ d% d& d' g
 k sÕt  t  j d) d) d) d) d) g d* t  j } t  j j d d d+ | t d d d+ | t f
 d d d+ | t d  d d+ | t f
 d d d+ | t d! d d+ | t f
 d d d+ | t d" d d+ | t f
 g d, d- } t | j |  s°t  d/ | j d d <| j j j d d d/ k sät  | j j j
 d j d d/ k s
	t  | j
 j d d d/ k s*	t  | j
 j
 d j d d/ k sM	t  | j d d d/ k sj	t  d0 | j j j d d <| j j j d d d0 k s€	t  | j j j
 d j d d0 k sÊ	t  | j
 j d d d0 k sê	t  | j
 j
 d j d d0 k s
t  | j d d d0 k s*
t  d1 | j j j
 d j d <| j j j d d d1 k sg
t  | j j j
 d j d d1 k s
t  | j
 j d d d1 k s­
t  | j
 j
 d j d d1 k sÐ
t  | j d d d1 k sí
t  d2 | j
 j d d <| j j j d d d2 k s$t  | j j j
 d j d d2 k sJt  | j
 j d d d2 k sjt  | j
 j
 d j d d2 k st  | j d d d2 k sªt  d3 | j
 j
 d j d <| j j j d d d3 k sät  | j j j
 d j d d3 k s
t  | j
 j d d d3 k s*t  | j
 j
 d j d d3 k sMt  | j d d d3 k sjt  |
 j   | j   | j   d  S(>   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    s   table1.fitsi  i²  i  i¡  Râ   Rã   Rä   Rå   t   target1t   counts1t   notes1t	   spectrum1t   flag1s   table2.fitsg        R   R   R·   s!   a10,u4,a10,5f4,l,a10,u4,a10,5f4,ls   newtable.fitsi,  iÈ   id   iZ   iP   Ræ   R:   i   R;   i   s   4R x 10Cs(   [10A, J, 10A, 5E, L, 10A, J, 10A, 5E, L]R   (    (   i   R   i   R;   i   s   4R x 10Cs(   [10A, J, 10A, 5E, L, 10A, J, 10A, 5E, L]R   (   R   RG   R   R^   R`   R;   Ra   Rf   Rg   R[   R   R   Rb   R   R   R5   R\   R<   RÇ   RÈ   R   R&   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   RL   RN   R    Rê   RG   R   R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_merge_tables  sà    $*$*$'	!!!'	#& ##& ##& ##& ##& # 	*
	'	!!!'	#& ##& ##& ##& ##& #

c      	   C  sJ  i  } d | d <d | d <d | d <t  j t t d d d d g d d d d	 g d d
 d d g   d d t f d d t f g } t j d |  } x! | j D] } | | j	 | _
 q  W| j |  j d  d t t j |  j d   V } | d j } | d d k st  | d d k s*t  | d d k s@t  Wd QXd S(   sŒ   Regression test for https://github.com/astropy/astropy/issues/996

        This just tests one particular use case, but it should apply pretty
        well to other similar cases.
        i   R   R   gffffff@t   ci   i   i   t   dg      @gÍÌÌÌÌÌ@gÍÌÌÌÌÌ!@R   t   S1R\   s	   test.fitsRY   t   TNULL1t   TNULL2t   TNULL3N(   R   R÷   (   R   RG   t   listR   Rœ   t   floatR   R;   R   R   R   Rf   Rg   R   R[   R8   R<   (   R=   t   NULLSR\   R   Rš   R¡   R8   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_modify_column_attributes&  s"    


t   reasons2   See https://github.com/astropy/astropy/issues/7214c         C  så   t  j |  j d   } | d j } | j d  d k } | | } t  j |  } | j |  j d   t  j |  j d   } d } t j | t	 | j   sš t
  t j | t	 | d j   sÍ t
  | j   | j   d  S(   Ns
   table.fitsi   t   V_magi   s   newtable.fitss<   \[\('NGC1002',\s+12.3[0-9]*\) \(\'NGC1003\',\s+15.[0-9]+\)\](   R   R[   R\   R(   R;   Rf   Rg   t   ret   matchRe   R<   Rh   (   R=   R   t   tbdatat   maskt	   newtbdataR    R¡   t   expect(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_mask_arrayC  s    
!%
c      
   C  së  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 |	 j |  j d   t j	 |  j d   }
 |
 d j
 d } | d d k sWt  | d d !\ } } } | | d k st  | d k st  | t  j d d d d d g d t  j k j   sÎt  d  | d <| d d  k sît  d! | d <| d d! k st  | d d !d d! k s+t  t j t d"   |  d# | d d !d <| d d !d d# k sot  | d d# k st  d$ | d d !d <| d d !d d$ k s³t  d# | d d !d <| d d !d d# k sát  d% | d d !d  d  d&  d& <| d d !d d% k st  d# | d d d  d <| d d !d d# k sPt  t j t d'   |  | d d !j d  d# k st  | d d !j d  d# k sªt  t j t | d d !j d  | d d !j d d%  | d d !j d  d% k s t  t j t | d d !j d t  |
 d j
 j j d d d% k sGt  |
 d j
 j j d j d d% k sqt  |
 d j j d d d% k st  |
 d j j d j d d% k sŒt  |
 d j
 d d d% k sÝt  |
 j   d  S((   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    s   table1.fitsi   i   R   g        R   i6  i;  c         S  s   |  d d !d S(   Ni   i   Rà   (    (   t   r(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   <lambda>s  s    i,  i  iô  iÿÿÿÿc         S  s   |  d d !d S(   Ni   i   Rà   (    (   R  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR	    s    (   R   RG   R   R^   R`   R;   Ra   Rf   Rg   R[   R\   R<   R   Rd   t   pytestt   raisest   KeyErrorR(   t   setfieldR   RÇ   RÈ   R   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   RL   R4   R   R   Rõ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_slice_a_rowX  s^    $*9

""" '*$'!c      
   C  s±  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 |	 j |  j d   t j	 |  j d   }
 t
 |
 d j d  d k sSt  t
 |
 d j d d d ! d k s}t  t
 |
 d j d d d ! d k s§t  t
 |
 d j d d d ! d k sÑt  t
 |
 d j d d d ! d k sût  t
 |
 d j d d d ! d k s%t  t
 |
 d j d d d ! d k sOt  t
 |
 d j d d d ! d k syt  t
 |
 d j d d d ! d k s£t  |
 j   d  S(    Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    s   table1.fitsi   i   i   i   i   (   R   RG   R   R^   R`   R;   Ra   Rf   Rg   R[   R%   R\   R<   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   RL   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_fits_record_len  s*    $*#********c      
   C  sÂ  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 t j d	 d
 d d  } t j d	 d d d d d  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d  } t j | | | | | g  } t j j | d d }
 |	 j d |
 j d <|	 j d |
 j d <d d d t  j d d  d! d" d# g d$ t  j t	 f |
 j d% <d& d' d t  j d( d) d* d+ d, g d$ t  j t	 g |
 j d <t
 |
 j j j d j  t
 |
 j j j d  k st  t
 |
 j j j d j  t
 |
 j j d j  k sÎt  t
 |
 j j j d j  t
 |
 j j d  k st  |
 j d d d k s#t  |
 j j j d d d k sFt  |
 j j j d j d d k slt  |
 j j d d d k st  |
 j j d j d d k s¯t  |
 j j d j d d k sÒt  |
 j j d% j d d- k sõt  |
 j j d j d t  j d. d. d. d. d. g d$ t  j k j   s?t  |
 j j d j d t	 k sbt  |
 j d d d/ k st  |
 j j j d d d/ k s¢t  |
 j j j d j d d/ k sÈt  |
 j j d d d/ k sèt  |
 j j d j d d/ k st  |
 j j d j d d& k s.t  |
 j j d% j d d k sQt  |
 j j d j d t  j d( d) d* d+ d, g d$ t  j k j   st  |
 j j d j d t	 k sŸt  d  S(0   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    RW   i   i   i   s   A Notegñ?g@gffffff
@g@g      @R   i   t   JIM1t   33g      ð?g       @g      @g      @g      @R   g        i!   (   R   RG   R   R^   R`   R;   Ra   R\   R   R   RÆ   RÇ   R   RÈ   R<   Rd   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   Rí   R{   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_add_data_by_rows²  sd    $*	$	$""#& ###6##& ###6c      
   C  s¡  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 t  j d d d d g  } t  j d d d  d! g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }
 t  j d" d# d$ d% d& g d' t  j |
 j d d( <t j j |	 j d) d* } |
 j | j d+ )t	 | j j
 j d j  t	 | j j
 j d  k st  t	 | j j
 j d j  t	 | j j d j  k s×t  t	 | j j
 j d j  t	 | j j d  k st  | j d d d k s,t  | j j
 j d d d k sOt  | j j
 j d j d d k sut  | j j d d d k st  | j j d j d d k sžt  | j j d j d d k sÛt  | j j d, j d d- k sþt  | j j d( j d t  j d. d. d. d. d. g d' t  j k j   sHt  | j j d+ j d t k skt  | j d+ d d k st  | j j
 j d d+ d k s«t  | j j
 j d j d+ d k sÑt  | j j d d+ d k sñt  | j j d j d+ d k st  | j j d j d+ d k s7t  | j j d, j d+ d- k sZt  | j j d( j d+ t  j d" d# d$ d% d& g d' t  j k j   s€t  | j j d+ j d+ t k sÇt  | j j d j d/ d k sêt  | j j d j d/ d- k st  | j j d, j d/ d- k s0t  | j j d( j d/ t  j d. d. d. d. d. g d' t  j k j   szt  | j j d+ j d/ t k st  d  S(0   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    ip   i   il   iu   Râ   Rã   Rä   Rå   g      ð?g       @g      @g      @g      @R   i   RW   i	   i   i   R   g        i   (   R   RG   R   R^   R`   R;   Ra   R   R\   RÆ   RÇ   R   RÈ   R<   Rd   R   R   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   Rí   R{   t   tbhdu2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt"   test_assign_multiple_rows_to_tableô  sj    $*$*2""#& ###6##& ###6####6c      
   C  sq  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 t | j d  t |  k s't	  t | j d j  t |  k sOt	  t | j d j  t | j  k szt	  t | j d j  t | j
 d  k s©t	  t |  t |	 j  k sÊt	  t | j d  t |	 j j d  k sùt	  t | j d j  t |	 j j d j  k s.t	  t |	 j  t |	 j j  k sUt	  t |	 j j j d j  t |	 j j j
 d  k st	  t |	 j j j d j  t |	 j j d j  k sËt	  t |	 j j j d j  t |	 j j
 d  k st	  |	 j |  j d   t j |  j d   }
 d |
 d j d d <|
 d j d d d k sgt	  |
 d j j j
 d d d k st	  |
 d j j j d j d d k sžt	  |
 d j j
 d d d k sÜt	  |
 d j j d j d d k st	  d |
 d j j j
 d d <|
 d j d d d k s?t	  |
 d j j j
 d d d k sft	  |
 d j j j d j d d k st	  |
 d j j
 d d d k sŽt	  |
 d j j d j d d k sÛt	  d |
 d j j j d j d <|
 d j d d d k st	  |
 d j j j
 d d d k sAt	  |
 d j j j d j d d k skt	  |
 d j j
 d d d k st	  |
 d j j d j d d k s¶t	  d |
 d j j
 d d <|
 d j d d d k sït	  |
 d j j j
 d d d k st	  |
 d j j j d j d d k s@t	  |
 d j j
 d d d k sdt	  |
 d j j d j d d k st	  d |
 d j j d j d <|
 d j d d d k sÇt	  |
 d j j j
 d d d k sît	  |
 d j j j d j d d k st	  |
 d j j
 d d d k s<t	  |
 d j j d j d d k sct	  |
 j   d  S(    Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    s   table1.fitsiÕ   id   iô  iX  i   (   R   RG   R   R^   R`   R;   Ra   RÆ   R   R<   RÈ   R\   RÇ   Rf   Rg   R[   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   RL   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_verify_data_references8  sr    $*%(+/!/"'""!'*$'!'*$'!'*$'!'*$'!'*$'c      
   C  sù	  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 t j j |	 j j t  j	   }
 t
 |
 j j j d j  t
 |
 j j j d  k s^t  t
 |
 j j j d j  t
 |
 j j d j  k st  t
 |
 j j j d j  t
 |
 j j d  k sÑt  d |
 j d d <|
 j d d d k sÿt  |
 j j j d d d k s"t  |
 j j j d j d d k sHt  |
 j j d d d k sht  |
 j j d j d d k st  d |
 j j j d d <|
 j d d d k s¿t  |
 j j j d d d k sât  |
 j j j d j d d k st  |
 j j d d d k s(t  |
 j j d j d d k sKt  d |
 j j j d j d <|
 j d d d k st  |
 j j j d d d k s¥t  |
 j j j d j d d k sËt  |
 j j d d d k sët  |
 j j d j d d k st  d |
 j j d d <|
 j d d d k s?t  |
 j j j d d d k sbt  |
 j j j d j d d k st  |
 j j d d d k sšt  |
 j j d j d d k sËt  d |
 j j d j d <|
 j d d d k sÿt  |
 j j j d d d k s"t  |
 j j j d j d d k sHt  |
 j j d d d k sht  |
 j j d j d d k st  |
 j |  j d   t j |  j d   } d | d j d d <| d j d d d k sït  | d j j j d d d k st  | d j j j d j d d k s@t  | d j j d d d k sdt  | d j j d j d d k st  d | d j j j d d <| d j d d d k sÇt  | d j j j d d d k sît  | d j j j d j d d k st  | d j j d d d k s<t  | d j j d j d d k sct  d | d j j j d j d <| d j d d d k s¢t  | d j j j d d d k sÉt  | d j j j d j d d k sót  | d j j d d d k st  | d j j d j d d k s>t  d | d j j d d <| d j d d d k swt  | d j j j d d d k st  | d j j j d j d d k sÈt  | d j j d d d k sìt  | d j j d j d d k s	t  d | d j j d j d <| d j d d d k sO	t  | d j j j d d d k sv	t  | d j j j d j d d k s 	t  | d j j d d d k sÄ	t  | d j j d j d d k së	t  | j   d  S(    Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    iÕ   id   iô  iX  i   s   table1.fits(   R   RG   R   R^   R`   R;   Ra   R\   Rc   R¥   RÆ   RÇ   R   RÈ   R<   Rf   Rg   R[   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   Rí   RL   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_new_table_with_ndarray  s    $*!""#& ##& ##& ##& ##& #!'*$'!'*$'!'*$'!'*$'!'*$'c      
   C  s  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 d |	 j d d <|	 j d d d k s0t  |	 j j	 j
 d d d k sSt  |	 j j	 j d j d d k syt  |	 j j
 d d d k st  |	 j j d j d d k sŒt  d |	 j j	 j
 d d <|	 j d d d k sðt  |	 j j	 j
 d d d k st  |	 j j	 j d j d d k s9t  |	 j j
 d d d k sYt  |	 j j d j d d k s|t  d |	 j j	 j d j d <|	 j d d d k s³t  |	 j j	 j
 d d d k sÖt  |	 j j	 j d j d d k süt  |	 j j
 d d d k st  |	 j j d j d d k s?t  d |	 j j
 d d <|	 j d d d k spt  |	 j j	 j
 d d d k st  |	 j j	 j d j d d k s¹t  |	 j j
 d d d k sÙt  |	 j j d j d d k süt  d |	 j j d j d <|	 j d d d k s0t  |	 j j	 j
 d d d k sSt  |	 j j	 j d j d d k syt  |	 j j
 d d d k st  |	 j j d j d d k sŒt  d |	 j j d j d <|	 j |  j d   t j |  j d   }
 d |
 d j d d <|
 d j } |
 d j d d d k sDt  |
 d j j	 j
 d d d k skt  |
 d j j	 j d j d d k st  |
 d j j
 d d d k s¹t  |
 d j j d j d d k sàt  | d d d k sút  | j	 j
 d d d k st  | j	 j d j d d k s=t  d | j	 j d j d <t j j |  } d } x | j D] } x{ t t |   D]g } t | | t  j  rÕ| | |	 j | | k j   söt  q| | |	 j | | k st  qW| d } qvWd | j d d <|
 d j d d d k s:t  |
 d j j	 j
 d d d k sat  |
 d j j	 j d j d d k st  |
 d j j
 d d d k s¯t  |
 d j j d j d d k sÖt  | d d d k sðt  | j	 j
 d d d k st  | j	 j d j d d k s3t  | j d d d k sPt  | j j	 j
 d d d k sst  | j j	 j d j d d k st  | j j
 d d d k s¹t  | j j d j d d k sÜt  d  |
 d j d d <|
 d j d d d  k s	t  |
 d j j	 j
 d d d  k s9	t  |
 d j j	 j d j d d  k sc	t  |
 d j j
 d d d  k s	t  |
 d j j d j d d  k s®	t  | d d d  k sÈ	t  | j	 j
 d d d  k sè	t  | j	 j d j d d  k s
t  | j d d d k s(
t  | j j	 j
 d d d k sK
t  | j j	 j d j d d k sq
t  | j j
 d d d k s
t  | j j d j d d k sŽ
t  d! | j j	 j
 d d <|
 d j d d d  k sì
t  |
 d j j	 j
 d d d  k st  |
 d j j	 j d j d d  k s=t  |
 d j j
 d d d  k sat  |
 d j j d j d d  k st  | d d d  k s¢t  | j	 j
 d d d  k sÂt  | j	 j d j d d  k såt  | j d d d! k st  | j j	 j
 d d d! k s%t  | j j	 j d j d d! k sKt  | j j
 d d d! k skt  | j j d j d d! k st  |
 j   d  S("   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    iÕ   id   iô  iX  i   s   table1.fitsi
   i  (   R   RG   R   R^   R`   R;   Ra   R\   R<   RÇ   RÈ   R   Rf   Rg   R[   R   R%   R)   R¥   Rd   Rh   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   R{   RL   t   frRí   R1   R4   t   j(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_new_table_with_fits_recü  sÐ    $*#& ##& ##& ##& ##& #!'*$' #*%!'*$' ##& #!'*$' ##& #!'*$' ##& #c      
   C  s	  t  j d d d d g  } t  j d d d d g  } t j d	 d
 d d d |  } t j d	 d d d d d d |  } t j d	 d d d  } t j d	 d d d  } t j d	 d d d d d d d d g  } t j | | | | | g  } t j j |  }	 t j |	 j  }
 t |
 j j	 j
 d j  t |
 j j	 j d  k sOt  t |
 j j	 j
 d j  t |
 j
 j
 d j  k st  t |
 j j	 j
 d j  t |
 j
 j d  k sÂt  t |	 j j	 j
 d j  t |
 j j	 j d  k sýt  d |
 j d d <|
 j d d d k s+t  |
 j j	 j d d d k sNt  |
 j j	 j
 d j d d k stt  |
 j
 j d d d k st  |
 j
 j
 d j d d k s·t  |	 j d d d k sÔt  |	 j j	 j d d d k s÷t  |	 j j	 j
 d j d d k st  |	 j
 j d d d k s=t  |	 j
 j
 d j d d k s`t  d |
 j j	 j d d <|
 j d d d k st  |
 j j	 j d d d k s·t  |
 j j	 j
 d j d d k sÝt  |
 j
 j d d d k sýt  |
 j
 j
 d j d d k s t  |	 j d d d k s=t  |	 j j	 j d d d k s`t  |	 j j	 j
 d j d d k st  |	 j
 j d d d k sŠt  |	 j
 j
 d j d d k sÉt  d |
 j j	 j
 d j d <|
 j d d d k s t  |
 j j	 j d d d k s#t  |
 j j	 j
 d j d d k sIt  |
 j
 j d d d k sit  |
 j
 j
 d j d d k st  |	 j d d d k s©t  |	 j j	 j d d d k sÌt  |	 j j	 j
 d j d d k sòt  |	 j
 j d d d k st  |	 j
 j
 d j d d k s5t  d |
 j
 j d d <|
 j d d d k sft  |
 j j	 j d d d k st  |
 j j	 j
 d j d d k s¯t  |
 j
 j d d d k sÏt  |
 j
 j
 d j d d k sòt  |	 j d d d k st  |	 j j	 j d d d k s2t  |	 j j	 j
 d j d d k sXt  |	 j
 j d d d k sxt  |	 j
 j
 d j d d k st  d |
 j
 j
 d j d <|
 j d d d k sÏt  |
 j j	 j d d d k sòt  |
 j j	 j
 d j d d k st  |
 j
 j d d d k s8t  |
 j
 j
 d j d d k s[t  |	 j d d d k sxt  |	 j j	 j d d d k st  |	 j j	 j
 d j d d k sÁt  |	 j
 j d d d k sát  |	 j
 j
 d j d d k s	t  d  S(   Ni8  iN  i4  i=  RÔ   RÕ   RÖ   R×   R   RØ   R+   RÙ   RG   RÚ   RT   R   RÛ   RÜ   RÝ   RÞ   Rß   Rà   Rá   i   i    iÕ   id   iô  iX  i   (   R   RG   R   R^   R`   R;   Ra   R\   RÆ   RÇ   R   RÈ   R<   (   R=   RÚ   R&   Rm   Rn   Rp   Rr   Rt   Rè   Rí   R    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_bin_table_hdu_constructor}  s    $*"""#& ##& ##& ##& ##& ##& ##& ##& ##& ##& c         C  s!  xt  j t  j g D]} |   } | j d k s7 t  d | j k sL t  d | _ | j d k sj t  | j d d k s t  | d d  } | j d k s§ t  | j d d k sÀ t  t  j   } d | d <| d | d d  } | j d k s t  | j d d k s t  q Wd S(   së   testConstructorNameArg

        Passing name='...' to the BinTableHDU and TableHDU constructors
        should set the .name attribute and 'EXTNAME' header keyword, and
        override any name in an existing 'EXTNAME' value.
        R   t   EXTNAMEt   FOOR   t   EVENTSR8   N(   R   R;   R   R   R<   R8   t   Header(   R=   t   hduclsR    t   hdr(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_constructor_name_argÚ  s    		
c         C  s8   t  j d d d d d d g  } t  j j | g  d S(   s   
        Regression test for https://github.com/astropy/astropy/issues/5204
        "Handle unicode FITS BinTable column names on Python 2"
        R   u   spamR+   RH   RG   g      E@N(   R   R^   R;   Ra   (   R=   Rš   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_unicode_colname÷  s    !c      	   C  sm  t  j d d d d d t t g t t g g  } t  j | g  } t  j j |  } | j j d  d t	 j
 t t g d t	 j k j   s t  | j j d  d t	 j
 t t g d t	 j k j   sÔ t  t  j j | j  } | j j d  d t	 j
 t t g d t	 j k j   s)t  | j j d  d t	 j
 t t g d t	 j k j   sit  d  S(	   NR   Rà   R+   t   2LRG   i    R   i   (   R   R^   R   R   R`   R;   Ra   R\   R(   R   RG   RX   Rd   R<   (   R=   Rm   Rè   Rí   R{   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_bin_table_with_logical_array   s    ---c         C  sv   t  j |  j d   } | d j } | j | j d  k j   sI t  | j | d k j   sh t  | j   d  S(   Ns
   table.fitsi   R   (   R   R[   R\   R   R(   Rd   R<   Rh   (   R=   R   R  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_fits_rec_column_access  s
    $c         C  sP  t  j |  j d   } | d } d | j j k s: t  d | j j k sR t  d | j j j k sm t  | j d d d k s t  t | j d d t j	 d d	 d
 g d t j
  sÅ t  | j d d d k sâ t  | j d d d k sÿ t  | j d d d k st  t | j d d t j	 d d d g d t j
  sWt  | j d d d k stt  | j d d d k st  | j |  j d   | j   t  j |  j d   } | d } d | j j k sët  d | j j k st  d | j j j k st  | j d d d k s;t  t | j d d t j	 d d	 d
 g d t j
  svt  | j d d d k st  | j d d d k s°t  | j d d d k sÍt  t | j d d t j	 d d d g d t j
  st  | j d d d k s%t  | j d d d k sBt  | j   d  S(   Ns   zerowidth.fitsi   t   ORBPARMi    t   ANNAMEs   VLA:_W16t   STABXYZg~Ï°=@gs!øÀgz®aùÀR   t   NOSTAi   t   MNTSTAiÿÿÿÿs   VPT:_OUTg        i   s   newtable.fits(   R   R[   R\   R   R&   R<   R   R#   R   RG   RÊ   Rf   Rg   Rh   (   R=   R¡   R{   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_table_with_zero_width_column  sN    
*

*c      
   C  sd  d d d d g } d } t  j d d d d	 d
 t j |   } t  j j | g  } | j j   j d  | k sx t	  | j
 |  j d   t  j |  j d   R } | d j j   j d  | k sÑ t	  | d j d | k j   sô t	  Wd  QX~ t  j j | g  } t   ! | j
 |  j d  d t Wd  QXt  j |  j d   } } | d j j   j d  | j d d  k st	  | d j d | k j   s°t	  t  j j | d j j    } Wd  QX~ | j
 |  j d  d t t  j |  j d   R } | d j j   j d  | k s7t	  | d j d | k j   sZt	  Wd  QXd  S(   Nt   img1t   img2t   img3at   ps(   img1      img2      img3a     p         R   t   MEMNAMER+   RÝ   RG   s   raw-unicode-escapes   newtable.fitsi   RY   s    t    (   R   R^   R]   RG   R;   Ra   R\   t   tostringt   decodeR<   Rf   Rg   R[   Rd   R   R
   R   t   replacet   copy(   R=   R   t   st   acolt   ahduR¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_string_column_paddingJ  s0    $()
"#%(c         C  si  t  j j d d d d d d g d f d d	 d
 d d d g d  f d d d d d d	 g d! f g d d } t j j |  } d | j d <d | j d <| j |  j d   t j	 |  j d   } | d } | j
 j d  } | j
 j d  } | j d" k s	t  | j d# k st  | t  j d d g d d g d d g g d d	 g d
 d g d d g g d d g d d g d d	 g g g  k j   st  | t  j d d g d d g d d g g  k j   sÕt  Wd QX~ ~ ~ ~ t  j d d d$ d% g } d& | d <d | d <t   $ t j |  j d  | d t Wd QXt j |  j d   } | j d  j j d d k st  | j d  j d' k s t  t  j d d d( d d d) f g } d* | d <d | d <~ t   $ t j |  j d  | d t Wd QXt j |  j d   } | j d  j j d d k sGt  | j d  j d+ k set  d S(,   sv   
        Tests the multidimensional column implementation with both numeric
        arrays and string arrays.
        i    i   i   i   i   i   t   row1i   i   i   i	   t   row2t   row3R·   s   6i4,a8s   (2,3)t   TDIM1s   (4,2)t   TDIM2s   newtable.fitsNR   Rz   t   f4R6  t   S5t   okRY   iÿÿÿÿt   5t   row1row1t   row2row2t   row3row3(   i   i   i   (   i   i   (   Rz   R?  (   R6  R@  i   (   i   i   i   (   i   i   (   Rz   R?  (   i   i   (   i   i   i   (   i   i   i   (   R   Rb   RG   R   R;   Ra   R8   Rf   Rg   R[   R\   R(   Rç   R<   Rd   t   zerosR
   R   t   getdataR   Re   (   R=   R\   R@   R¡   Rm   Rn   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_multi_dimensional_columnsm  sR    	*
'6	'


%%$


%%c           sÌ   d d g d d g d d g g } t  j | f | f | f | f | f g d d g } t    } t j d
 |  } Wd QXt |  d k s t    f d   } | |  t j j |  } | |  d S(   s}  
        Tests two ways of creating a new `BinTableHDU` from a column of
        string arrays.

        This tests for a couple different regressions, and ensures that
        both BinTableHDU(data=arr) and BinTableHDU.from_columns(arr) work
        equivalently.

        Some of this is redundant with the following test, but checks some
        subtly different cases.
        R   t   efght   ijklt   mnopt   qrstt   uvwxR   R$   s   (3, 2)S4R\   Ni    c           se  |  j  d j d k s t  t j rJ |  j  d j j j d  sl t  n" |  j  d j j j d  sl t  |  j   j	 d  d t
 t j   j	 d   ¿ } | d	 } | j d
 d k sÆ t  | j  d j d k sâ t  t j r|  j  d j j j d  s2t  n" |  j  d j j j d  s2t  t j | j  d |  j  d k  s[t  Wd  QXd  S(   NR$   i   i   i   t   S4t   U4s	   test.fitsRY   i   R=  s   (4,2,3)(   i   i   i   (   i   i   i   (   R\   Rç   R<   R   t   PY2R   Re   t   endswithRf   Rg   R   R   R[   R8   R   Rd   (   R{   R¡   R  (   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_dims_and_roundtripÇ  s    	%"
	%"(   R$   s   (3, 2)S4(   R   RG   R	   R   R;   R%   R<   Ra   (   R=   R\   t   arrt   wRí   RR  R  (    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt,   test_bin_table_init_from_string_array_column®  s    		*
c   
      C  sÆ  d d g d d g d d g g } d d d	 d
 d g } t  j | | f | | f g d d d g } t j d |  } | j |  j d   t |  j d  d   } | j   } Wd QXt |  j d  d    } | j | j	 d d   Wd QXt j |  j d   ¶ } | d } | j
 d d k s0t  | j
 d d k sIt  xp | j D]e }	 t  j |	 d d d g d d g g k  st  t  j |	 d d d d	 d
 d g k  sSt  qSWWd QXd S(   s­  
        According to the FITS standard (section 7.3.2):

            If the number of elements in the array implied by the TDIMn is less
            than the allocated size of the ar- ray in the FITS file, then the
            unused trailing elements should be interpreted as containing
            undefined fill values.

        *deep sigh* What this means is if a column has a repeat count larger
        than the number of elements indicated by its TDIM (ex: TDIM1 = '(2,2)',
        but TFORM1 = 6I), then instead of this being an outright error we are
        to take the first 4 elements as implied by the TDIM and ignore the
        additional two trailing elements.
        t   abt   cdt   eft   ght   ijt   kli   i   i   i   i   R   R   s   (3, 2)S2R   t   5i8R\   s	   test.fitst   rbNt   wbs   (2,2,3)s   (2,2,2)R=  t   TFORM1t   12A(   R   s   (3, 2)S2(   R   R\  (   R   RG   R   R;   Rf   Rg   R[   t   readt   writeR4  R8   R<   R\   Rd   (
   R=   t   arr1t   arr2RS  R{   t   ft	   raw_bytesR¡   R  R4   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_columns_with_truncating_tdimß  s"    !
1c      
   C  s  d d d g d d d g d d d	 g g } t  j j | f | f g d
 d g } t j d |  } | j |  j d   t j |  j d   Ç } d | d j k s­ t	  | d j d d k sÊ t	  t
 | d j  d k sé t	  t
 | d j d  d k st	  | d j j d  d t  j j | j d  d d  k j   sTt	  Wd QXt j |  j d   ) } | d j | j |  j d   Wd QXt j |  j d   Ç } d | d j k sÑt	  | d j d d k sît	  t
 | d j  d k st	  t
 | d j d  d k s0t	  | d j j d  d t  j j | j d  d d  k j   sxt	  Wd QXd S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/201RC   RD   t   ghit   jklt   mnot   pqrt   stut   vwxs   yz R·   s   (3,3)S3R\   s	   test.fitsR=  i   s   (3,3,3)i   i    t   asciiNs
   test2.fits(   R   Rb   RG   R   R;   Rf   Rg   R[   R8   R<   R%   R\   R(   R   R3  Rd   (   R=   R\   t   recarrR   RÐ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_string_array_round_trip  s.    '#7#c         C  s¯  t  j d d g d d } t  j d d g d d g g d d } t  j d	 d
 g d d g g d d g d d g g g  } t j d d d d d |  t j d d d d d d d |  t j d d d d d d d |  g } t j j t j |   } | j |  j d   t j	 |  j d    } | d	 j
 d j d  | k j   sVt  | d	 j
 d j d  | k j   st  | d	 j
 d | k j   s¥t  Wd QXd S(    sV   Regression test for
        https://github.com/spacetelescope/PyFITS/issues/3
        R   R   R   s   |S1t   bcRW  t   es   |S2i   i   i   i   i   i   i   i   R   Re   R+   t   1ARG   t   strarrayt   4AR   s   (2,2)t   intarrayt   4Is   (2, 2)s	   test.fitsRn  N(   R   RG   R   R^   R;   Ra   R`   Rf   Rg   R[   R\   t   encodeRd   R<   (   R=   t   arrat   arrbt   arrcR©   R    RÐ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_new_table_with_nd_column/  s    '9,,c         C  s  t  j d d g d d g g d d g d d g g g  } t  j d	 d
 g d d g g d d g d d g g g  } t j d d d d d d d |  t j d d d d d d d |  g } t j j t j |   } | j |  j d   t j	 |  j d   Û } | d j
 d d k s#t  | d j
 d d k s@t  | d j
 d | d j
 d k omd k n sxt  | d j d | k j   st  | d j d | k j   sŸt  | d j j d k sÚt  Wd  QXt j t t j d d d d! d d d | d  S("   sy  Normally the product of the dimensions listed in a TDIMn keyword
        must be less than or equal to the repeat count in the TFORMn keyword.

        This tests that this works if less than (treating the trailing bytes
        as unspecified fill values per the FITS standard) and fails if the
        dimensions specified by TDIMn are greater than the repeat count.
        i   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   i   R   R   R+   t   20IR   s   (2,2)RG   R   Rw  s	   test.fitsR_  t   TFORM2R=  R>  i0   Nt   2I(   R   RG   R   R^   R;   Ra   R`   Rf   Rg   R[   R8   R<   R\   Rd   t   itemsizeR
  R  R   (   R=   Ry  Rz  R©   R    RÐ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_mismatched_tform_and_tdimJ  s"    	998##"c         C  s<   t  j |  j d   } | d j d j d k s8 t  d S(   s@   Regression test for https://github.com/astropy/astropy/pull/3580s	   tdim.fitsi   R   i   N(   i   i   i   (   R   R[   R\   Rç   R<   (   R=   t   hdulist(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_tdim_of_size_onel  s    c         C  sa  t  j |  j d   } | d j } | j d  } | } | j d  | k j   s\ t  x| t t |  d  D]d } | |  } | j d  | |  k j   sš t  | | } | j d  | | k j   ss t  qs W| d d d  } | j d  | d d d  k j   st  | d d d  } | j d  | d d d  k j   s]t  d S(   sD   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/52s
   table.fitsi   RØ   i   Niÿÿÿÿ(   R   R[   R\   R(   Rd   R<   R   R%   (   R=   Re  R\   t   targetsR6  t   n(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_slicingr  s    !
%
).c         C  så   t  j |  j d   } | d j } | | d d k } | t j | d d k  } | d g } | d  } x2 | | | | g D] } t | t  j  s t  q Wt | |  s· t  t | |  sÌ t  t | |  sá t  d S(   sD   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/55s
   table.fitsi   RØ   t   NGC1001i    N(	   R   R[   R\   R   t   whereR)   RÀ   R<   R5   (   R=   Re  R\   t   s1t   s2t   s3t   s4R6  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_array_slicing  s    
c         C  sè   t  j |  j d   Ê } | d j } d | d <t j | d d k  sQ t  d | d <t j | d d k  sz t  xa t t t j f D]M } | d d d g  | d <t j	 | d t j d d d g   s t  q WWd QXd S(   sV   
        Regression test for https://github.com/spacetelescope/PyFITS/pull/48
        s
   table.fitsi   i    R   i   i   N(
   R   R[   R\   R   Rd   R<   Rû   t   tupleRG   t   array_equal(   R=   R    R\   t	   container(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_array_broadcasting  s    

c         C  së   t  j |  j d  d d } | d j } | | d d k } | t j | d d k  } | d g } | d  } x2 | | | | g D] } t | t  j  s t  q Wt | |  sœ t  t | |  sÒ t  t | |  sç t  d S(	   s¡   
        Like test_array_slicing but with the file opened in 'readonly' mode.
        Regression test for a crash when slicing readonly memmap'd tables.
        s
   table.fitst   modet   readonlyi   RØ   R  i    N(	   R   R[   R\   R   R  R)   RÀ   R<   R5   (   R=   Re  R\   R  R  R  R  R6  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_array_slicing_readonly¥  s    
c         C  sœ   t  j |  j d   } | d } |  j d  } |  j d  } |  j d  } | j | | |  t  j j | | |  } t | j | j  s t  t	 | j
  t	 | j
  k s¹ t  d S(   s   
        A simple test of the dump/load methods; dump the data, column, and
        header files and try to reload the table from them.
        s
   table.fitsi   s   data.txts   coldefs.txts
   header.txtN(   R   R[   R\   Rg   t   dumpR;   t   loadR5   R<   Re   R8   (   R=   R¡   R{   t   datafilet   cdfilet   hfilet	   new_tbhdu(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_dump_load_round_trip·  s    
c         C  sõ   t  j j d d d d d g d f d d d	 d
 d g d f g d d } t j j |  } |  j d  } |  j d  } |  j d  } | j | | |  t j j | | |  } t	 | j
 | j
  sÍ t  t | j  t | j  k sñ t  d S(   sË   
        Regression test for https://github.com/spacetelescope/PyFITS/issues/22

        Ensures that a table containing a multi-value array column can be
        dumped and loaded successfully.
        R   i   i   i   i   g¹?R   i   i   i   i   gÉ?R·   s	   a1,4i4,f8s   data.txts   coldefs.txts
   header.txtN(   R   Rb   RG   R   R;   Ra   Rg   R  R  R5   R\   R<   Re   R8   (   R=   R\   R{   R  R  R  R  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_dump_load_array_columsÌ  s    !	c      	   C  s  t  j t t t g d t  j } t j d d d d d |  } t  j d d d	 g d t  j } t j d d
 d d d |  } t  j d d d g d t  j } t j d d d d d |  } t  j d d d g d t  j	 } t j d d d d d |  } t  j d d d g  }	 t j d d d d d |	  }
 t  j d d d g d t  j
 } t j d d d d d |  } t  j d1 d2 d3 g d t  j } t j d d# d d$ d |  } t  j d d% d& g d' d( d) g d* d+ d, g g d t  j	 } t j d d- d d. d |  } t j j | | | | |
 | | | g  } |  j d/  } | j |  t j j |  } t | j | j  s}t  d0 S(4   s9  
        Tests loading a table dump with no supplied coldefs or header, so that
        the table format has to be guessed at.  There is of course no exact
        science to this; the table that's produced simply uses sensible guesses
        for that format.  Ideally this should never have to be used.
        R   R   t   c0R+   Rá   RG   i   i   iÿ   Rn   t   BiÐÿÿi   Rp   RK   iMJ©øiÒ  i³µVRr   RT   R   RC   RV  Rt   R   gñ?g@gffffff
@Rv   R®   y        @y        @g      @y        ffffff@Rx   t   Mi   i   i   i   i   i   i   i	   RM   s   PJ()s   data.txtNyñ?@yffffff
@@y      @ffffff@(   R   RG   R   R   RX   R   R^   R_   RÉ   t   int32RÊ   t
   complex128R;   Ra   Rg   R  R  R5   R\   R<   (   R=   t   a0R  R   Rn   Ro   Rp   Rq   Rr   Rs   Rt   Ru   Rv   Rw   Rx   Ry   RM   R{   R  R  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_load_guess_formatá  s,    	!!!!!<*c         C  s'  t  j d d d d d d g  } t  j d d d d d d g  } t  j d d	 d d d d
 g  } t  j j | | | g  } | j j d d d	 g k s t  | j j d g d
 k sŸ t  | j d d g k j   sà t  | j d d g k j   st  | j j	 d
 g k j   s#t  d S(   s>  
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/86

        Numpy recarray objects have a poorly-considered feature of allowing
        field access by attribute lookup.  However, if a field name conincides
        with an existing attribute/method of the array, the existing name takes
        precence (making the attribute-based field lookup completely unreliable
        in general cases).

        This ensures that any FITS_rec attributes still work correctly even
        when there is a field with the same name as that attribute.
        R   R&   R+   RK   RG   i   R·   i   t   otheri   N(
   R   R^   R;   Ra   R\   R&   R<   R·   Rd   R€  (   R=   Rm   Rn   Rp   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_attribute_field_shadowing  s    !!!!""c         C  sÝ   t  j j t t f t t f g d d } t j j |  } | j j	 d d g k sZ t
  t | j |  sr t
  | j |  j d   t j |  j d  d d } | j j	 d d g k sÄ t
  t | |  sÙ t
  d S(   sŠ   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/113

        Tests creating a table from a recarray containing numpy.bool columns.
        R·   s   |b1,|b1Rá   s
   table.fitst   exti   N(   R   Rb   RG   R   R   R   R;   Ra   R   R·   R<   R5   R\   Rf   Rg   RG  (   R=   RG   R@   R\   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_table_from_bool_fields$  s    *c         C  sc   t  j t f t f t f g d d g } t j d |  } | j d | d k j   s_ t  d S(   sã   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/215

        Tests the case where a multi-field ndarray (not a recarray) containing
        a bool field is used to initialize a `BinTableHDU`.
        R   R   t   ?R\   N(   R   Rš  (	   R   RG   R   R   R   R;   R\   Rd   R<   (   R=   RS  R    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_table_from_bool_fields26  s    *c         C  s;  t  j d d d t t g } t  j d d d t t g } t  j j t  j | | g   } | j |  j d   t  j	 |  j d  d d 1 } t | d j
 d d <t | d j
 d d	 <Wd
 QXt  j	 |  j d   Y } | d j
 d t t g k j   st  | d j
 d t t g k j   s1t  Wd
 QXd
 S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/139t   F1Rá   RG   t   F2s
   table.fitsR  t   updatei   i    N(   R   R^   R   R   R;   Ra   R`   Rf   Rg   R[   R\   Rd   R<   (   R=   Rm   Rn   R@   R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_bool_column_updateB  s    !!)c           sM  t  j d d d d d t j d d d d g  d	 t } t  j j | g  } | j |  j d
   t  j	 |  j d
  d d &   d   d j
 d <  d j
 d =Wd QXt  j	 |  j d
       t j t   f d    Wd QXy4 t  j	 |  j d
        d j d Wd QXWn. t k
 rH} t |  j d  sIt  n Xd S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/197Rª  R   R   s   ---RG   s   1.0s   2.0s   3.0Rn  s	   test.fitsR  R¬  t   E3i   R_  Rø   Nc             s     d j  d S(   Ni   Rª  (   R\   (    (   RÐ   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR	  b  s    sY   the header may be missing the necessary TNULL1 keyword or the table contains invalid data(   R   R^   R   RG   R   R   Ra   Rf   Rg   R[   R8   R
  R  t
   ValueErrorR\   Re   RQ  R<   (   R=   Rõ   t   tableRr  (    (   RÐ   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_missing_tnullR  s     	!c   	      C  s;  d } t  j d d d d | d t j d d d	 d
 d g  d t } t  j j | g  } | j |  j d   t	 |  j d  d d 9 } | j
   j d d  } | j d  | j |  Wd QXt  j	 |  j d  d t ( } | d j d	 d d k st  Wd QXd } t  j d d d d | d t j d d d d g  d t } t  j j | g  } | j |  j d   t	 |  j d  d d 9 } | j
   j d d  } | j d  | j |  Wd QXt  j	 |  j d  d t F } | d j d	 d d k s1t j | d j d	 d  s1t  Wd QXd S(   sY  Regression test for https://github.com/astropy/astropy/issues/5134

        Blank values in numerical columns of ASCII tables should be replaced
        with zeros, so they can be loaded into numpy arrays.

        When a TNULL value is set and there are blank fields not equal to that
        value, they should be replaced with zeros.
        u    Rª  R+   t   I8R   RG   i    i   i   i   i   Rn  s   ascii_null.fitsR  s   r+u   2       u           Nt   memmapt   NaNs   F12.8g      ð?g       @g      @g      @s   ascii_null2.fitsu
   3.00000000u
             g        (   R   R^   R   RG   R   R   Ra   Rf   Rg   R[   Ra  R4  t   seekRb  R\   R<   t   isnan(	   R=   t   nullval1Rm   R°  RÐ   t   nulledRe  t   nullval2Rn   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_blank_field_zerol  s0    	!'	!c         C  sG   d g d } t  j d d d d | } | | j k j   sC t  d S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/218iÿÿÿi   R»   R+   RH   RG   N(   R   R^   RG   Rd   R<   (   R=   RS  Rš   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_column_array_type_mismatch  s    c         C  sK  t  j |  j d   w } | d j d | d _ t | d j t  j  sR t  t | d j  d k sq t  | d j |  j	 d   Wd QXt  j |  j	 d    } | d j
 d d k sÉ t  | d j
 d d	 k sæ t  | d j
 d
 d k st  t | d j t  j  s"t  t | d j  d k sAt  Wd QXd S(   sW   Regression test
        for https://github.com/spacetelescope/PyFITS/issues/27
        s   tb.fitsi   i    s	   test.fitsNt   NAXISi   t   NAXIS1i   t   NAXIS2(   R   R[   R\   t   NoneR)   RÀ   R<   R%   Rf   Rg   R8   (   R=   RÐ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_table_none¢  s     c         C  sé   t  j |  j d   ! } | d j |  j d   Wd QXd | d j k sT t  t  j |  j d   w } t  j |  j d   V } t | d j  t | d j  k s¶ t  t	 | d j | d j  sÙ t  Wd QXWd QXd S(   sB  Test unnecessary parsing and processing of FITS tables when writing
        direclty from one FITS file to a new file without first reading the
        data for user manipulation.

        In other words, it should be possible to do a direct copy of the raw
        data without unecessary processing of the data.
        s
   table.fitsi   s	   test.fitsNR\   (
   R   R[   R\   Rf   Rg   t   __dict__R<   Re   R8   R5   (   R=   RÐ   t   h1t   h2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_unncessary_table_loadµ  s    	 ,c         C  sÖ   t  j |  j d   } t | d j j d t  s; t  t  j j	 | d j  } t | d j j d t  sx t  | j
 |  j d   t  j |  j d   * } t | d j | d j  sÌ t  Wd QXd S(   sÉ  Tests a rare corner case where the columns of an existing table
        are used to create a new table with the new_table function.  In this
        specific case, however, the existing table's data has not been read
        yet, so new_table has to get at it through the Delayed proxy.

        Note: Although this previously tested new_table it now uses
        BinTableHDU.from_columns directly, around which new_table is a mere
        wrapper.
        s
   table.fitsi   i    s	   test.fitsN(   R   R[   R\   R)   R   RÈ   R   R<   R;   Ra   Rf   Rg   R5   (   R=   R¡   R   t   hdul2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt&   test_table_from_columns_of_other_tableÊ  s    #$c         C  sQ  t  j |  j d   3} | d j } t  j d |  } t   ! | j |  j d  d t Wd QXt  j |  j d   Ç } | d j } t j	 | d | d k  s± t
  t j	 | d | d k  sÔ t
  t j	 | d	 j t j  | d	 j t j  k  st
  t j	 t j | d
 d d  | d
 k  sAt
  Wd QXWd QXd S(   s?   Tests initializing a TableHDU with the data from a BinTableHDU.s   tb.fitsi   R\   s	   test.fitsRY   NRm   Rn   Rp   Rr   t   Tt   F(   R   R[   R\   R   R
   Rf   Rg   R   R   Rd   R<   t   astypeR   R  (   R=   R¡   R  R{   RÅ  t   tbdata2(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_bintable_to_asciitableå  s    
"##"c         C  sã  t  j |  j d    } t | d j j d t  s> t  t j	 | d j  } t j
 |  } t | d j j d t  s t  t | | d j  s£ t  Wd QXt  j |  j d   H } t j	 | d j  } t j
 |  } t | | d j  st  Wd QXt  j |  j d   H } t j	 | d j  } t j
 |  }	 t |	 | d j  sgt  Wd QXt  j |  j d   X }
 t   F t j	 |
 d j  } t j
 |  } t | |
 d j  sÓt  Wd QXWd QXd S(	   s   
        Regression test for https://github.com/astropy/astropy/issues/1597

        Tests for pickling FITS_rec objects
        s   tb.fitsi   i    Ns
   ascii.fitss   random_groups.fitss   zerowidth.fitsi   (   R   R[   R\   R)   R   RÈ   R   R<   t   picklet   dumpst   loadsR5   R
   (   R=   t   btbt   btb_pdt   btb_plt   asct   asc_pdt   asc_plt   rgrt   rgr_pdt   rgr_plt   zwct   zwc_pdt   zwc_pl(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_pickleû  s&    #$"""
c      	   C  s¯   t  j g  d d d d d d f f g } t j |  } | j d
 d k sR t  | j d d k sk t  | j d d k s t  | j j d  } | j d k s« t  d  S(   NR   R   t   i8R   t   S64Rõ   RR   i   i   Rœ  i`   RŸ  i    t   TDIM3s   (2,3)i   (   R   RÜ  (   R   RÝ  (   i   i   (   i    (	   R   RG   R   R;   R8   R<   R\   R(   Rç   (   R=   RG   R    R(   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_zero_length_table 	  s    c      	   C  s¶   t  j |  j d   d } t  j d d d | d d d d	  } t  j j | g  } | j |  j d
   t  j |  j d
   - } t	 j
 | d j d | k  s¬ t  Wd QXd S(   s  
        When creating a table column with non-trivial TDIMn, and
        big-endian array data read from an existing FITS file, the data
        should not be unnecessarily byteswapped.

        Regression test for https://github.com/astropy/astropy/issues/3561
        s   random_groups.fitst   DATAR   t   TESTRG   R   s   (3,1,128,1,1)R+   t   1152Es	   test.fitsi   N(   R   RG  R\   R^   R;   Ra   Rf   Rg   R[   R   Rd   R<   (   R=   R\   Rš   R@   R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt#   test_dim_column_byte_order_mismatch-	  s    		c         C  sí   t  j |  j d   } t  j |  j d   } t |  t |  } t  j j | d | } | | t |  )| d d k } | | } t | d | d   s¥ t  t | d | d  sÂ t  t | t  j |  j d    sé t  d S(   s*  
        Tests creating a `FITS_rec` object with `FITS_rec.from_columns`
        from an existing `FITS_rec` object read from a FITS file.

        This ensures that the per-column arrays are updated properly.

        Regression test for https://github.com/spacetelescope/PyFITS/issues/99
        s   tb.fitsRW   Rm   i   N(   R   RG  R\   R%   RÀ   Ra   R5   R<   (   R=   t   data1t   data2RW   t   mergedR  t   masked(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_fits_rec_from_existing?	  s    
c         C  s;  t  j d g d d g } t j |  j d  |  t j |  j d  d d = } d | d	 j d d
 <| d	 j d d
 d k s t  Wd QXt j |  j d   ( } | d	 j d d
 d k sÍ t  Wd QXt  j d d d g d d d g g f g d d d d f f g } t j |  j d  |  d d d g d d d g g } t j |  j d  d d c } | d	 j d d k st  d | d	 j d d <t  j	 | d	 j d d
 | k  sÉt  Wd QXt j |  j d   N } | d	 j d d k st  t  j	 | d	 j d d
 | k  s1t  Wd QXd S(   sÌ   
        Regression test for https://github.com/astropy/astropy/issues/4452

        Ensure that changes to values in a string column are saved when
        a file is opened in ``mode='update'``.
        RC   R   R   t   S3s	   test.fitsR  R¬  t   XYZi   i    NRD   t   geht   ijkt   lmnt   opqi   i   s
   test2.fitsR=  s   (3,3,2)(   RC   (   R   Ré  (   i   i   (   i    i   i   (
   R   RG   R   Rf   Rg   R[   R\   R<   R8   Rd   (   R=   R\   R¡   t   expected(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_update_string_column_inplace_	  s(    !''!0s   not HAVE_OBJGRAPHc         C  s3   d   } t  d   | |  j d   Wd QXd S(   s?   Regression test for https://github.com/astropy/astropy/pull/520c         S  sN   t  j |    } | d j j   } Wd  QXx | j j D] } | | q8 Wd  S(   Ni   (   R   R[   R\   R5  R   R&   (   t   filenameR¡   R\   t   colname(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   readfile	  s    RÀ   s   memtest.fitsN(   t   _refcountingR\   (   R=   Ró  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_reference_leak	  s    	c         C  s  d d l  m } d d l m } |   } | j   z! t d   | j   Wd QXWd | j   X~ |  j   } xY d d d d	 g D]E } | j   z' t d   t	 | |    Wd QXWd | j   Xq W~ |   } | j
   z$ t d   | j |  Wd QXWd | j   X~ d S(
   sG  
        Regression test for https://github.com/astropy/astropy/pull/4539

        This actually re-runs a small set of tests that I found, during
        careful testing, exhibited the reference leaks fixed by #4539, but
        now with reference counting around each test to ensure that the
        leaks are fixed.
        i   (   t   TestCore(   t   TestMultipleHDURÀ   NR¹   RÂ   RÌ   RÓ   (   t	   test_coreRö  t   test_connectR÷  t   setupRô  t   test_add_del_columns2t   teardownt	   __class__t   getattrt   setup_classt	   test_readt   teardown_class(   R=   t   tmpdirRö  R÷  RL   RN   t	   test_nameRP   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_reference_leak2	  s6    	

	
c         C  sî   t  j |  j d   Ð } | d } |  j d  } |  j d  } |  j d  } | j | | |  | j | | | d t t t  X } | j | | | d t | d j t k s¿ t	  t
 | d j  d	 k sÞ t	  Wd  QXWd  QXd  S(
   Ns
   table.fitsi   s   data.txts   coldefs.txts
   header.txtRY   t   clobberi    sr   "clobber" was deprecated in version 2.0 and will be removed in a future version. Use argument "overwrite" instead.(   R   R[   R\   Rg   R  R   R	   R   t   categoryR<   Re   t   message(   R=   R¡   R{   R  R  R  t   warning_lines(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_dump_clobber_vs_overwriteÅ	  s    
c      
   C  sð  t  j d d d g d t  j } t j d d d d d	 d d |  } t j j | g  } | j |  j d   t j	 |  j d  d t
 ­ } | d } d | j k s° t  | j d d k sÉ t  | j d j t  j d  k sî t  t  j | j d | k  st  d | j d d <| j |  j d   Wd QXt j	 |  j d  d t
  } | d } d | j k s}t  | j d d k st  | j d j t  j d  k s»t  t  j | j d d d d g k  sæt  Wd QXd S(   sP   
        Tests updating a table column containing pseudo-unsigned ints.
        i   i   i   R   R   t   AR+   R   R   i   RG   s	   test.fitst   uintt   TZERO1t   uint32ic   i    s
   test2.fitsNI       I       I       (   R   RG   R  R   R^   R;   Ra   Rf   Rg   R[   R   R8   R<   R\   R   Rd   (   R=   R\   Rš   R@   R¡   R    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_pseudo_unsigned_intsÔ	  s$    !$!
%"!
%c         C  sX  t  j d d d t j d g d d d d d	 d d
 d  } t  j t  j   t  j j | g  g  } d | d j d d <| j	 |  j
 d   | d j d d k s® t  t  j |  j
 d   } d | d j d d <| d j d d d k sü t  | j	 |  j
 d   t  j |  j
 d   ( } | d j d d d k sNt  Wd QXd S(   s   Check that a scaled column if correctly saved once it is modified.
        Regression test for https://github.com/astropy/astropy/issues/6887
        R   Rm   RG   i   R   s   >i2R+   t   1IR   R   i   i   i    s   a.fitsi
   s   b.fitsN(   R   R^   R   RG   R9   R:   R;   Ra   R\   Rf   Rg   R<   R[   (   R=   Rm   R$   RQ   R¡   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_column_with_scalingñ	  s    '!(I   t   __name__t
   __module__RB   R   R   R¢   R­   R±   R¹   RÂ   RÅ   RÌ   RÓ   Rë   Rî   Rô   Rþ   R
  t   markt   xfailR   R  R  R  R  R  R  R  R  R  R!  R"  R$  R%  R+  R9  RH  RU  Rg  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è  Rð  t   skipifRe   Rõ  R  R	  R  R  (    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR6   n   s   		W	#	.						Z						@		B	D	[	i		]						/	#	A	1	.	"		"								*						/						%			 	+!!-		c         c  sY   t  j   t t j |    } | Vt  j   t t j |    | k sU t d   d S(   só   
    Perform the body of a with statement with reference counting for the
    given type (given by class name)--raises an assertion error if there
    are more unfreed objects of the given type than when we entered the
    with statement.
    s/   More {0!r} objects still in memory than before.N(   t   gct   collectR%   t   objgrapht   by_typeR<   (   t   type_t   refcount(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyRô  
  s    	

t   TestVLATablesc           B  sV   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   s;   Tests specific to tables containing variable-length arrays.c           s.     f d   } x d D] } | |  q Wd  S(   Nc           s-  t  j d d d |  d d g d g d  } t  j j | g  } t  j   } t  j | | g  } t   ! | j   j d  d	 t	 Wd  QXt  j
   j d    } | d
 j j d  } | d d d !t j d d d d g d t j k j   s t  | d
 j d j j d  s#t  Wd  QXd  S(   NR   t   QUAL_SPER+   RG   i    i#  iá   s	   toto.fitsRY   i   i   i   R   s   J(1571)(   R   R^   R;   Ra   R:   R9   R
   Rf   Rg   R   R[   R\   R(   R   RG   R_   Rd   R<   R   R+   RQ  (   t   format_codeRš   t   tb_hdut   pri_hdut   hdu_listt   totot   q(   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test!
  s    
"3s   PJ()s   QJ()(   s   PJ()s   QJ()(    (   R=   R$  t   code(    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_variable_length_columns 
  s    c         C  s(   d   } x d D] } | |  q Wd S(   sD   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/54c         S  sY  d g d g d } t  j d d d |  d |  } t  j d d d d d d g d  } t  j j | | g d	 d
 } t | j d  d
 k s t  t | j d  d
 k s³ t  | j d d | d k j   sÚ t  | j d d | d k j   st  | j d d d g d k j   s+t  | j d d d g d k j   sUt  d  S(   Ni   i
   R   t   TESTVLFR+   RG   t   TESTSCART   RW   i   i    i	   iÿÿÿÿ(   R   R^   R;   Ra   R%   R\   R<   Rd   (   R  RS  R¯   R°   R  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR$  6
  s    %''*s   PJ()s   QJ()N(   s   PJ()s   QJ()(    (   R=   R$  R%  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_extend_variable_length_array3
  s    	c           s.     f d   } x d D] } | |  q Wd  S(   Nc      
     sS  t  j t  j d d g  t  j d g  t  j d g  g d  } t j d d d |  d |  } t j j | g  } t   ! | j   j d	  d
 t	 Wd  QXt j
   j d	    } | d j d j j d  sß t  xg t d  D]Y } xP t t | |   D]8 } | d j j d  | | | | | k s	t  q	Wqì WWd  QXd  S(   Ng¹nP*@õ;g'©x[¹õ;g        t   OR   t   testaR+   RG   s   newtable.fitsRY   i   i    s   D(2)i   (   R   RG   R   R^   R;   Ra   R
   Rf   Rg   R   R[   R   R+   RQ  R<   R   R%   R\   R(   (   R  R   R7  R{   Rí   R  R1   (   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR$  J
  s    '
"#s   PD()s   QD()(   s   PD()s   QD()(    (   R=   R$  R%  (    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt6   test_variable_length_table_format_pd_from_object_arrayI
  s    c           s.     f d   } x d D] } | |  q Wd  S(   Nc      
     sG  t  j d d g  t  j d g  t  j d g  g } t j d d d |  d |  } t j j | g  } t   ! | j   j d  d	 t	 Wd  QXt j
   j d    } | d
 j d j j d  sÓ t  xg t d  D]Y } xP t t | |   D]8 } | d
 j j d  | | | | | k sý t  qý Wqà WWd  QXd  S(   Ng¹nP*@õ;g'©x[¹õ;g        R   R+  R+   RG   s   newtable.fitsRY   i   i    s   D(2)i   (   R   RG   R   R^   R;   Ra   R
   Rf   Rg   R   R[   R   R+   RQ  R<   R   R%   R\   R(   (   R  R   R7  R{   Rí   R  R1   (   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR$  [
  s    !
"#s   PD()s   QD()(   s   PD()s   QD()(    (   R=   R$  R%  (    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt.   test_variable_length_table_format_pd_from_listZ
  s    c           s.     f d   } x d D] } | |  q Wd  S(   Nc      
     sY  t  j t  j d d d g  t  j d d g  t  j d g  g d  } t j d d	 d
 |  d |  } t j j | g  } t   ! | j   j d  d t	 Wd  QXt j
   j d    } | d j d j j d  så t  xg t d  D]Y } xP t t | |   D]8 } | d j j d  | | | | | k st  qWqò WWd  QXd  S(   NR   R   Rõ   Rö   Rr  Re  R*  R   R+  R+   RG   s   newtable.fitsRY   i   i    s   A(3)i   (   R   RG   R   R^   R;   Ra   R
   Rf   Rg   R   R[   R   R+   RQ  R<   R   R%   R\   R(   (   R  R   R7  R{   R¡   R  R1   (   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR$  m
  s    -
"#s   PA()s   QA()(   s   PA()s   QA()(    (   R=   R$  R%  (    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt6   test_variable_length_table_format_pa_from_object_arrayl
  s    c           s.     f d   } x d D] } | |  q Wd  S(   Nc      
     s   d d d g } t  j d d d |  d |  } t  j j | g  } t   ! | j   j d  d	 t Wd  QXt  j   j d    } | d
 j	 d j
 j d  s¬ t  xg t d  D]Y } xP t t | |   D]8 } | d
 j j d  | | | | | k sÖ t  qÖ Wq¹ WWd  QXd  S(   NR   RV  RC   R   R+  R+   RG   s   newtable.fitsRY   i   i    s   A(3)i   (   R   R^   R;   Ra   R
   Rf   Rg   R   R[   R   R+   RQ  R<   R   R%   R\   R(   (   R  R   R7  R{   R¡   R  R1   (   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR$  
  s    
"#s   PA()s   QA()(   s   PA()s   QA()(    (   R=   R$  R%  (    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt.   test_variable_length_table_format_pa_from_list~
  s    c           s.     f d   } x d D] } | |  q Wd S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/200c           së   t  j d d d |  d t j d  g d  } t  j j | g  } t  j   } t  j | | g  } t   ! | j	   j
 d  d t Wd  QXt  j   j
 d   } x< t | d | j  D]$ \ } } | | k j   s¿ t  q¿ Wd  S(	   NR   R  R+   RG   i$  iá   s	   toto.fitsRY   (   R   R^   R   t   arangeR;   Ra   R:   R9   R
   Rf   Rg   R   RG  R   RG   Rd   R<   (   R  Rš   R  R   R!  R\   t   row_at   row_b(   R=   (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR$  
  s    
"#s   PJ()s   QJ()N(   s   PJ()s   QJ()(    (   R=   R$  R%  (    (   R=   s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_getdata_vla
  s    c         C  s[  g  t  d  D] } t j | d  ^ q } g  t  d  D] } t j d d |  ^ q9 } t j d d d d t j d  } t j d d d	 d | } t j d
 d d	 d | } t j j | | g  } t j j | | g  } t j t j   | | g  }	 |	 j	 |  j
 d  d t t j |  j
 d    }
 |
 d j d d k sWt  |
 d j d d k stt  t |
 d j | j  st  t |
 d j | j  s²t  Wd QXt j |  j
 d   C }
 t j d |
 d j d |
 d j  } | j	 |  j
 d   Wd QXt j |  j
 d   & } t | d j | j  sOt  Wd QXt j t j   g  } | j	 |  j
 d   t j |  j
 d  d d Z } xP t  d  D]B } t j |  j
 d   " }
 | j |
 d  | j   Wd QXq±WWd QXt j |  j
 d   @ } x6 t  d d  D]% } t | | j | j  s(t  q(WWd QXd S(   sX   
        Regression test for https://github.com/spacetelescope/PyFITS/issues/47
        iÿ   i   i   R$  R+   RT   RG   R
  t   PJR  s	   test.fitsRY   R~  s   PJ(255)i   NR\   R8   s
   test3.fitss
   test2.fitsR  RZ   i   (   R   R   R0  R   R^   R;   Ra   R9   R:   Rf   Rg   R   R[   R8   R<   R5   R\   RZ   t   flush(   R=   R  Rc  Rd  Rõ   Rm   Rn   RL   RN   R¡   RÐ   t   new_hduRÃ  t   new_hdult   _t   idx(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_copy_vla¥
  s:    ,/$%&%!(   R  R  t   __doc__R&  R)  R,  R-  R.  R/  R3  R:  (    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR  
  s   							t   TestColumnFunctionsc           B  sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C  sz  x t  j   D]r \ } } t j d t j |   } | j | k t j d |  } | j | k t j d |  } | j | k q Wt j d d  } | j d k sª t  | j j d k sÂ t  | j j d k sÚ t  t j d d  } | j d k st  | j j d k st  | j j d k s1t  | j j	 d k sIt  t j d d	  } | j j d
 k sst  | j j d k st  | j j	 d k s£t  t j d d  } | j j d k sÍt  | j j d k såt  | j j	 d k sýt  t j d d  } | j j d k s't  | j j d k s?t  | j j	 d k sWt  t j d d  } | j j d
 k st  | j j d k st  | j j	 d k s±t  t j d d  } | j j d k sÛt  | j j d k sót  | j j	 d k st  t j d d  } | j d k s2t  | j j
 d k sJt  t j d d d t } | j d k swt  t j d d
  } | j d
 k st  | j j
 d k s¶t  t j d d
 d t } | j d k sãt  t j d d  } | j d k s
t  t j d d  } | j d k s1t  | j j
 d k sIt  t j d d d t } | j d k svt  d S(   sÏ  
        Test to ensure that when Numpy-style record formats are passed in to
        the Column constructor for the format argument, they are recognized so
        long as it's unambiguous (where "unambiguous" here is questionable
        since Numpy is case insensitive when parsing the format codes.  But
        their "proper" case is lower-case, so we can accept that.  Basically,
        actually, any key in the NUMPY2FITS dict should be accepted.
        Rá  t   I4RK   i   s   F15.8RÈ  i   i   s   E15.8RH   s   D15.8R®   s   F10.0i
   i    s   E10.0s   D10.0RI   Rn  t   I10R?  s   E15.7s   F16.7t   f8s   D25.17N(   R   t   itemsR   R^   R   R   R+   R<   t   widthR   t	   recformatR   (   R=   RB  t
   fitsformatRõ   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt!   test_column_format_interpretationÜ
  sj    
c      	   C  s  t  j d d d d d d g } t  j j | g  } | j |  j d   t  j |  j d   ³ } | d j d	 d k s t  | d j	 d j
 t j
 d
  k s­ t  t j | d j	 d d d d g k  sÜ t  t j j j | d j	 d  } | j   d k st  Wd QXd S(   sT   
        Regression test for https://github.com/astropy/astropy/issues/3422
        Rá  s   F5.0RG   gñ?g@gffffff
@s	   test.fitsi   R_  RÊ   g      ð?g       @g      @s      1.   2.   3.N(   R   R^   R   Ra   Rf   Rg   R[   R8   R<   R\   R   R   Rd   Rb   R   R(   R2  (   R=   Rõ   R   R¡   t   raw(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt    test_zero_precision_float_column3  s    !)/c         C  sG   d g d } t  j d d d d | } | | j k j   sC t  d S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/218iÿÿÿi   R»   R+   RH   RG   N(   R   R^   RG   Rd   R<   (   R=   RS  Rš   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR»  F  s    c         C  s#   t  j t t j d d d g  d S(   sv   Test that a TypeError is raised when a ColDefs is instantiated with
        a sequence of non-Column objects.
        i   i   i   N(   R
  R  t	   TypeErrorR   R`   (   R=   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt%   test_new_coldefs_with_invalid_seqenceM  s    c         C  sÓ  t  j |  j d    } t | d j j d t  s> t  t j	 | d j  } t j
 |  } t | d j j d t  s t  t | | d j  s£ t  Wd QXt  j |  j d   H } t j	 | d j  } t j
 |  } t | | d j  st  Wd QXt  j |  j d   H } t j	 | d j  } t j
 |  }	 t |	 | d j  sgt  Wd QXt  j |  j d   H }
 t j	 |
 d j  } t j
 |  } t | |
 d j  sÉt  Wd QXd S(	   s   
        Regression test for https://github.com/astropy/astropy/issues/1597

        Tests for pickling FITS_rec objects
        s   tb.fitsi   i    Ns
   ascii.fitss   random_groups.fitss   zerowidth.fitsi   (   R   R[   R\   R)   R   RÈ   R   R<   RÌ  RÍ  RÎ  R5   (   R=   RÏ  RÐ  RÑ  RÒ  RÓ  RÔ  RÕ  RÖ  R×  RØ  RÙ  RÚ  (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyRÛ  T  s$    #$"""c         C  s}   t  j d d d d  } t  j d d d d  } t  j | | g  } | d | d k s_ t  | d | d k sy t  d S(	   s5   Tests that a `ColDefs` can be indexed by column name.R   R   R+   R®   R   i    i   N(   R   R^   R`   R<   (   R=   R   R   R©   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_column_lookup_by_namex  s
    c         C  s?  t  j j t  j d d d t  j d d d g  } | j d } | j j d  | j j j d k sn t	  d | _
 | j
 d k s t	  d | j k s¡ t	  | j d d k sº t	  | j j d g k sÕ t	  t j t   | j d Wd QX| j j d d	  t j t   | j d Wd QX| j d	 j
 d	 k sFt	  | j j j d k sat	  | j j d	 g k s|t	  | j j j d	 g k st	  d
 | j d	 _
 t j t   | j d	 Wd QX| j d
 j
 d
 k sçt	  | j j j d k st	  | j j d
 g k st	  | j j j d
 g k s;t	  d S(   s6  
        This is a test of the column attribute change notification system.

        After a column has been removed from a table (but other references
        are kept to that same column) changes to that column's attributes
        should not trigger a notification on the table it was removed from.
        R   R+   R®   R   t   HELLOt   TTYPE2t   TTYPE1Nt   GOODBYEt   foo(   R   (   RM  (   RN  (   R   R;   Ra   R^   R   t   del_colR\   R   R&   R<   R   R8   R
  R  R  t   change_name(   R=   R°  R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt*   test_column_attribute_change_after_removal  s6    		c      
   C  s   t  j d d d d d d d d d g } t j |  } | j | j k sQ t  | j | j k si t  t j | j	 | j	 k  s t  d S(   s    
        Regression test for https://github.com/astropy/astropy/pull/4514

        Tests that columns with the X (bit array) format can be deep-copied.
        t   xcolR+   t   5XRG   i   i    N(
   R   R^   R5  t   deepcopyR   R<   R+   R   Rd   RG   (   R=   Rõ   Rn   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_x_column_deepcopyŽ  s
    *c      	   C  s  t  j d d d d d d g d d d	 g g } t j |  } | j | j k sW t  | j | j k so t  t j | j	 d
 | j	 d
 k  s t  t j | j	 d | j	 d k  sÁ t  t  j d d d d d d g d d d	 g g } t j |  } | j | j k st  | j | j k s0t  t j | j	 d
 | j	 d
 k  sYt  t j | j	 d | j	 d k  st  d S(   sž   
        Regression test for https://github.com/astropy/astropy/pull/4514

        Tests that columns with the P/Q formats (variable length arrays) can be
        deep-copied.
        t   pcolR+   R4  RG   i   i   i   i   i   i    t   qcolt   QJN(
   R   R^   R5  RT  R   R<   R+   R   Rd   RG   (   R=   Rõ   Rn   Rp   Rr   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_p_column_deepcopyÁ  s    0))0)(   R  R  RD  RF  R»  RH  RÛ  RI  RQ  RU  RY  (    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyR<  Û
  s   	W				$		1	c          C  si   t  j d d d g  }  t j d d d |  d d  } t j j | g  } | j d	 =d
 | j d _ d  S(   Ni   i   i   R   R   RG   R+   RH   RL  R   i    (	   R   RG   R   R^   R;   Ra   t   _headerR   R   (   Rz   Rš   R    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_regression_5383Ø  s
    
c          C  s  d d l  m }  |  d d d g d d d g d	 d
 d g g d d d d g d d d d g } d | d _ d | d _ d | j d <t   f } t j | d t j i d d 6 } t |  d k sÎ t	  t
 | d j  j d  sð t	  Wd  QXx1 d D]) } t j | | | j |  sý t	  qý W| j j d  | j j d  k  sTt	  | j d d k smt	  | j d d k st	  d  S(   Ni   (   t   Tablei   i   i   R   R   Rõ   gffffff@g      @gÍÌÌÌÌÌ@R&   R   R1   t   U1Re  s   m/ss
   not-a-unitt   barRN  R8   Rá  i    s'   'not-a-unit' did not parse as fits unitRC   t   TUNIT1RK  R  (   R°  R\  R   t   metaR	   R   R;   R  R%   R<   Re   R  RÏ   R   R  R\   R8   t   index(   R\  R°  RT  R    R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_table_to_hduã  s    -!%('*c          C  sv   t  j d
 d g d d t f d t f g j t j  }  |  d } |  d } t d	   t | |  D  sr t	  d  S(   Ng      ð?i   g      @i   R   Rz   t   yi   c         s  s!   |  ] \ } } | | k Vq d  S(   N(    (   t   .0R   R   (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pys	   <genexpr>  s    (   g      ð?i   (   g      @i   (   i   (
   R   RG   Rü   Rœ   Rc   R   RÀ   Rd   R   R<   (   Rz   t   x1at   x1b(    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   test_regression_scalar_indexingü  s
    '

(5   t
   __future__R    R   R   t
   contextlibR5  R  R  R
  t   numpyR   R   R]   R  R   t   HAVE_OBJGRAPHt   ImportErrorR   t   externR   t   extern.six.movesR   R   R   RÌ  t   ioR   t   tests.helperR	   R
   t   utils.compatR   t   utils.exceptionsR   R-   R   R   t   utilR   t   verifyR   R   R   R#   R5   R6   t   contextmanagerRô  R  R<  R[  Rb  Rg  (    (    (    s?   lib/python2.7/site-packages/astropy/io/fits/tests/test_table.pyt   <module>   sR   

		1ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ §Ÿý		