ó
šßÈ[c           @   sˆ  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d d l m Z 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 m Z d d l m Z d d l m Z e  j j e  j j e ƒ d ƒ Z y d  d l Z Wn e k
 re Z  n Xe! Z  d „  Z" d e# f d „  ƒ  YZ$ d e# f d „  ƒ  YZ% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d S(   iÿÿÿÿN(   t   assert_allclosei   (   t   HDUListt
   PrimaryHDUt   BinTableHDUi   (   t   fitsi   (   t   units(   t   ranget   zip(   t   Tablet   QTable(   t   catch_warnings(   t   UnitScaleErrort   datac         C   s<   x5 |  j  j D]' } t j |  | | | k ƒ s t Sq Wt S(   N(   t   dtypet   namest   npt   allt   Falset   True(   t   at   bt   name(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt
   equal_data   s    t   TestSingleTablec           B   s˜   e  Z d  „  Z d „  Z e j j d ƒ d „  ƒ Z d „  Z d „  Z	 d „  Z
 e j j d e e f ƒ d „  ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z RS(   c      	   C   s…   t  j t t d d d d g d d d d g d	 d
 d d g ƒ ƒ d t d ƒ t f t d ƒ t d ƒ f t d ƒ t f g ƒ|  _ d  S(   Ni   i   i   i   R   R   t   ct   dgffffff@g      @gÍÌÌÌÌÌ@gÍÌÌÌÌÌ!@R   t   U1(   R   t   arrayt   listR   t   strt   intt   floatR   (   t   self(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   setup_class%   s    c         C   s_   t  | j d ƒ ƒ } t |  j ƒ } | j | d t ƒt j | ƒ } t | | ƒ s[ t ‚ d  S(   Ns   test_simple.ftst	   overwrite(	   R   t   joinR   R   t   writeR   t   readR   t   AssertionError(   R    t   tmpdirt   filenamet   t1t   t2(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_simple+   s
    s   not HAS_PATHLIBc         C   sh   t  j t | j d ƒ ƒ ƒ } t |  j ƒ } | j | d t ƒt j | ƒ } t	 | | ƒ sd t
 ‚ d  S(   Ns   test_simple.fitR"   (   t   pathlibt   PathR   R#   R   R   R$   R   R%   R   R&   (   R    R'   R(   R)   R*   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_simple_pathlib2   s
    c         C   sM  t  | j d ƒ ƒ } t |  j ƒ } d | j d <d | j d <d | j d <d d	 d
 d d g | j d <d d d g | j d <| j | d t ƒt j | ƒ } t | | ƒ s´ t	 ‚ x’ | j D]‡ } t
 | j t ƒ r%xl t t | j | ƒ ƒ D]. } | j | | | j | | k sð t	 ‚ qð Wq¾ | j | | j | k s¾ t	 ‚ q¾ Wd  S(   Ns   test_simple.fitsi   t   Agffffff@t   Bt   spamt   Ct   thist   isR   t   longt   commentt   commentst   firstt   secondt   thirdt   HISTORYR"   (   R   R#   R   R   t   metaR$   R   R%   R   R&   t
   isinstanceR   R   t   len(   R    R'   R(   R)   R*   t   keyt   i(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_simple_meta:   s     /c         C   s”   t  | j d ƒ ƒ } t |  j ƒ } d | j d <t ƒ   } | j | d t ƒWd  QXt | ƒ d k sn t	 ‚ t  | d j
 ƒ j d ƒ s t	 ‚ d  S(   Ns   test_simple.fitsR1   t   ttype1R"   i   i    sX   Meta-data keyword ttype1 will be ignored since it conflicts with a FITS reserved keyword(   R   R#   R   R   R<   R
   R$   R   R>   R&   t   messaget
   startswith(   R    R'   R(   R)   t   l(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_simple_meta_conflictingL   s    c         C   se   t  | j d ƒ ƒ } t |  j ƒ } | j | d t d d ƒt j | ƒ } t | | ƒ sa t ‚ d S(   sE   
        Test that file type is recognized without extension
        R+   R"   t   formatR   N(	   R   R#   R   R   R$   R   R%   R   R&   (   R    R'   R(   R)   R*   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_simple_noextensionV   s
    t
   table_typec         C   sÅ   t  | j d ƒ ƒ } | |  j ƒ } t j | d _ t j t j | d _ | j | d t	 ƒ| j
 | ƒ } t | | ƒ s‚ t ‚ | d j t j k sž t ‚ | d j t j t j k sÁ t ‚ d  S(   Ns   test_with_units.fitsR   R   R"   (   R   R#   R   t   ut   mt   unitt   kmt   sR$   R   R%   R   R&   (   R    RI   R'   R(   R)   R*   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_with_units`   s    c         C   sè   t  | j d ƒ ƒ } t |  j d t ƒ} d d d d g | j d <d d d d g | j d <d d d d g | j d <| j | d t ƒt j | ƒ } | j s¦ t	 ‚ t
 | | ƒ s» t	 ‚ t j | d j | d j k ƒ sä t	 ‚ d  S(	   Ns   test_masked.fitst   maskedi   i    R   R   R   R"   (   R   R#   R   R   R   t   maskR$   R%   RP   R&   R   R   R   (   R    R'   R(   R)   R*   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_maskedl   s    c         C   s1  t  | j d ƒ ƒ } t j t t d d d d g d d d d	 g ƒ ƒ d
 t  d ƒ t j f t  d ƒ t j f g ƒ} t | d t	 ƒ} d d d d g | j
 d <d d d d g | j
 d <| j | d t	 ƒt j | ƒ } t j j | d t j d t j d g ƒ t j j | d t j d d t j g ƒ d  S(   Ns   test_masked_nan.fitsgÍÌÌÌÌÌ@gÍÌÌÌÌÌ @g333333@g333333@gffffff@g      @gÍÌÌÌÌÌ@gÍÌÌÌÌÌ!@R   R   R   RP   i   i    R"   (   R   R#   R   R   R   R   t   float64t   float32R   R   RQ   R$   R%   t   testingt   assert_array_almost_equalt   nan(   R    R'   R(   R   R)   R*   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_masked_nan}   s    -)c         C   sz   t  | j d ƒ ƒ } t |  j ƒ } | j | d t ƒt | d ƒ  } t j | ƒ } Wd  QXt	 | |  j ƒ sv t
 ‚ d  S(   Ns   test_read_from_fileobj.fitsR"   t   rb(   R   R#   R   R   t   writetoR   t   openR   R%   R   R&   (   R    R'   R(   t   hdut   ft   t(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_read_from_fileobjŽ   s    c         C   sj   t  |  j ƒ } d | j d _ d | j d _ d | j d _ t j | ƒ } t | |  j ƒ sf t ‚ d  S(   Nt   RADIANSi    R1   i   t	   millieggsi   (   R   R   t   columnsRL   R   R%   R   R&   (   R    R\   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt    test_read_with_nonstandard_units–   s    (   t   __name__t
   __module__R!   R+   t   pytestt   markt   skipifR.   RA   RF   RH   t   parametrizeR   R	   RO   RR   RX   R_   Rc   (    (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyR   #   s   				
	
$			t   TestMultipleHDUc           B   sà   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e j j	 d d d g ƒ d „  ƒ Z
 e j j	 d d	 d
 g ƒ d „  ƒ Z d „  Z d „  Z e j j	 d d d g ƒ d „  ƒ Z e j j	 d d	 d
 g ƒ d „  ƒ Z d „  Z RS(   c      	   C   s-  t  j t t d d d d g d d d d g d	 d
 d d g ƒ ƒ d t d ƒ t f t d ƒ t d ƒ f t d ƒ t f g ƒ|  _ t  j t t d d	 d d g d	 d
 d d g ƒ ƒ d t d ƒ t f t d ƒ t f g ƒ|  _ t	 ƒ  } t
 |  j d d ƒ} t
 |  j d d ƒ} t | | | g ƒ |  _ d  S(   Ni   i   i   i   R   R   R   R   gffffff@g      @gÍÌÌÌÌÌ@gÍÌÌÌÌÌ!@R   R   gffffffö?gš™™™™™	@gÍÌÌÌÌÌ@t   pt   qR   R8   R9   (   R   R   R   R   R   R   R   t   data1t   data2R   R   R   t   hdus(   R    t   hdu1t   hdu2t   hdu3(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyR!   ¡   s    ?*	c         C   s
   |  `  d  S(   N(   Ro   (   R    (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   teardown_class¯   s    c         C   s   t  j d ƒ d  S(   Nt   always(   t   warningst   filterwarnings(   R    t   method(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   setup_method²   s    c         C   sœ   t  | j d ƒ ƒ } |  j j | ƒ t ƒ   } t j | ƒ } Wd  QXt | ƒ d k s^ t ‚ t  | d j	 ƒ j
 d ƒ s€ t ‚ t | |  j ƒ s˜ t ‚ d  S(   Ns   test_read.fitsi   i    s`   hdu= was not specified but multiple tables are present, reading in first available table (hdu=1)(   R   R#   Ro   RZ   R
   R   R%   R>   R&   RC   RD   R   Rm   (   R    R'   R(   RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt	   test_readµ   s    c         C   sp   t  | j d ƒ ƒ } |  j j | ƒ t j t ƒ  } t j | d d ƒWd  QX| j	 j
 d d k sl t ‚ d  S(   Ns   test_read_with_hdu_0.fitsR\   i    s   No table found in hdu=0(   R   R#   Ro   RZ   Rf   t   raisest
   ValueErrorR   R%   t   valuet   argsR&   (   R    R'   R(   t   exc(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_read_with_hdu_0¿   s
    R\   i   R8   c         C   s€   t  | j d ƒ ƒ } |  j j | ƒ t ƒ   } t j | d | ƒ} Wd  QXt | ƒ d k sd t ‚ t	 | |  j
 ƒ s| t ‚ d  S(   Ns   test_read_with_hdu_1.fitsR\   i    (   R   R#   Ro   RZ   R
   R   R%   R>   R&   R   Rm   (   R    R'   R\   R(   RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_read_with_hdu_1Æ   s    i   R9   c         C   s€   t  | j d ƒ ƒ } |  j j | ƒ t ƒ   } t j | d | ƒ} Wd  QXt | ƒ d k sd t ‚ t	 | |  j
 ƒ s| t ‚ d  S(   Ns   test_read_with_hdu_2.fitsR\   i    (   R   R#   Ro   RZ   R
   R   R%   R>   R&   R   Rn   (   R    R'   R\   R(   RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_read_with_hdu_2Ï   s    c         C   sz   t  ƒ   } t j |  j ƒ } Wd  QXt | ƒ d k s< t ‚ t | d j ƒ j d ƒ s^ t ‚ t	 | |  j
 ƒ sv t ‚ d  S(   Ni   i    s`   hdu= was not specified but multiple tables are present, reading in first available table (hdu=1)(   R
   R   R%   Ro   R>   R&   R   RC   RD   R   Rm   (   R    RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_read_from_hdulistØ   s    c         C   sN   t  j t ƒ  } t j |  j d d ƒWd  QX| j j d d k sJ t ‚ d  S(   NR\   i    s   No table found in hdu=0(	   Rf   Rz   R{   R   R%   Ro   R|   R}   R&   (   R    R'   R~   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt!   test_read_from_hdulist_with_hdu_0à   s    c         C   s^   t  ƒ   } t j |  j d | ƒ} Wd  QXt | ƒ d k sB t ‚ t | |  j ƒ sZ t ‚ d  S(   NR\   i    (   R
   R   R%   Ro   R>   R&   R   Rm   (   R    R'   R\   RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt!   test_read_from_hdulist_with_hdu_1å   s    c         C   s^   t  ƒ   } t j |  j d | ƒ} Wd  QXt | ƒ d k sB t ‚ t | |  j ƒ sZ t ‚ d  S(   NR\   i    (   R
   R   R%   Ro   R>   R&   R   Rn   (   R    R'   R\   RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt!   test_read_from_hdulist_with_hdu_2ì   s    c         C   s\   t  ƒ   } t j |  j d ƒ } Wd  QXt | ƒ d k s@ t ‚ t | |  j ƒ sX t ‚ d  S(   Ni   i    (   R
   R   R%   Ro   R>   R&   R   Rm   (   R    RE   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_read_from_single_hduó   s    (   Rd   Re   R!   Rs   Rx   Ry   R   Rf   Rg   Ri   R€   R   R‚   Rƒ   R„   R…   R†   (    (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyRj   Ÿ   s   				
	$	$			$$c          C   sœ  t  j t j j t d ƒ ƒ }  t j |  d j t j	 t
 t
 g ƒ k ƒ sO t ‚ t j |  d j t j	 t
 t
 g ƒ k ƒ s€ t ‚ t j |  d j t j	 t
 t
 g ƒ k ƒ s± t ‚ t j |  d j t j	 t
 t
 g ƒ k ƒ sâ t ‚ t j |  d j t j	 d d g ƒ k ƒ st ‚ t j |  d j t j	 d d	 g ƒ k ƒ sDt ‚ t |  d j t j	 d
 d g ƒ ƒ t j |  d j t j	 t
 t g ƒ k ƒ s˜t ‚ d S(   sŒ   
    Regression test for #1795 - this bug originally caused columns where TNULL
    was not defined to have their first element masked.
    s   tb.fitst   c1t   c2t   c3t   c4i   i   t   abcs   xy g"Z3£™™@g±£™¹ÌÌ@N(   R   R%   t   ost   pathR#   t   DATAR   R   RQ   R   R   R&   R   R    R   (   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_masking_regression_1795ú   s    111111#c       
   C   s³   d d d g }  d d d g } d d d	 g } t  |  | | g d
 d d i d d 6ƒ} d | d _ t j t ƒ   } | j d d d d t ƒWd  QX| j j d d k s¯ t	 ‚ d  S(   Ni   i   i   g       @g      @gffffff @t   xt   yt   zR   R   R   R   R<   s   first tableR   s   1.2s   t.fitsRG   R   R"   i    s¨   The column 'a' could not be stored in FITS format because it has a scale '(1.2)' that is not recognized by the FITS standard. Either scale the data or change the units.(   R   R   R   (
   R   RL   Rf   Rz   R   R$   R   R|   R}   R&   (   R   R   R   R^   R~   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_scale_error
  s    (c         C   sÚ   t  j d d t ƒ} | d d d … t  j k t | g ƒ } | j t |  j d ƒ ƒ d t ƒt	 j
 t |  j d ƒ ƒ ƒ V } | d j d j t  j d	 ƒ k sª t ‚ t  j | d j d | k ƒ sÐ t ‚ Wd QXd S(
   s›   
    Regression test for https://github.com/astropy/astropy/issues/1953

    Ensures that Table columns of bools are properly written to a FITS table.
    i   R   Ni   s	   test.fitsR"   i   t   col0t   bool(   R   t   onesR•   t   False_R   R$   R   R#   R   R   R[   R   R   R&   R   (   R'   t   arrR^   t   hdul(    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_bool_column  s    "!)c      	   C   s  t  t j d d d g ƒ g ƒ } | j t |  j d ƒ ƒ d t ƒt j t |  j d ƒ ƒ ƒ S } t j	 | d j
 d d d	 d
 g k ƒ s“ t ‚ | d j d d k s° t ‚ Wd QXt  t j d g ƒ g ƒ } t j t ƒ ' | j t |  j d ƒ ƒ d t ƒWd QXd S(   s  
    Test that a column of unicode strings is still written as one
    byte-per-character in the FITS table (so long as the column can be ASCII
    encoded).

    Regression test for one of the issues fixed in
    https://github.com/astropy/astropy/pull/4228
    u   au   bu   cds	   test.fitsR"   i   R”   R   R   t   cdt   TFORM1t   2ANu   â˜ƒ(   R   R   R   R$   R   R#   R   R   R[   R   R   R&   t   headerRf   Rz   t   UnicodeEncodeError(   R'   R^   R™   R*   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_unicode_column'  s    
!"!/#c      	   C   sù   t  |  j d ƒ ƒ } t d d g d d g g d d d g ƒ} d	 | d _ d
 | d _ t ƒ  T } | j | d t ƒt | ƒ d k s t ‚ t  | d j	 ƒ j
 d ƒ s² t ‚ Wd  QXt ƒ   } t j | d d ƒWd  QXt | ƒ d k sõ t ‚ d  S(   Ns   test_unit.fitsi   i   i   i   R   R   R   s   m/ss
   not-a-unitR"   i    s'   'not-a-unit' did not parse as fits unitR\   (   R   R#   R   RL   R
   R$   R   R>   R&   RC   RD   R%   (   R'   R(   R)   RE   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_unit_warnings_read_write>  s    *(c      
   C   s\   t  j j t d ƒ } t j | ƒ } | j d d d d d d d d d d g	 k sX t ‚ d S(   sL   
    Regression test for https://github.com/astropy/astropy/issues/6079
    s   stddata.fitsR7   t    s     *** End of mandatory fields ***s    *** Column names ***s    *** Column formats ***N(   RŒ   R   R#   RŽ   R   R%   R<   R&   (   R'   R(   R^   (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   test_convert_comment_conventionN  s    
(,   RŒ   Ru   Rf   t   numpyR   t   numpy.testingR    R¢   R   R   R   R   R   RJ   t   extern.six.movesR   R   t   tableR   R	   t   tests.helperR
   t   units.format.fitsR   R   R#   t   dirnamet   __file__RŽ   R,   t   ImportErrorR   t   HAS_PATHLIBR   R   t   objectR   Rj   R   R“   Rš   R    R¡   R£   (    (    (    sA   lib/python2.7/site-packages/astropy/io/fits/tests/test_connect.pyt   <module>   s4   !
	|[					