ó
šßÈ[c           @   s  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	 m
 Z
 m Z 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 d d
 l m Z d d l m Z d d l  m Z d d l m Z d e f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t   Column(   t   FITSDifft
   HeaderDifft   ImageDataDifft   TableDataDifft   HDUDifft   report_diff_values(   t   HDUListt
   PrimaryHDUt   ImageHDU(   t   BinTableHDU(   t   Headeri   (   t   catch_warnings(   t   AstropyDeprecationWarning(   t   range(   t   fitsi   (   t   FitsTestCaset   TestDiffc           B   s‚  e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d  „  Z" d! „  Z# d" „  Z$ d# „  Z% d$ „  Z& d% „  Z' d& „  Z( d' „  Z) d( „  Z* d) „  Z+ RS(*   c         C   s„   t  d d d	 g ƒ } | j ƒ  } t | | ƒ j s9 t ‚ t | j ƒ  | j ƒ  ƒ j s] t ‚ t j t ƒ  t d d ƒ Wd  QXd  S(
   Nt   Ai   t   Bi   t   Ci   (   R   i   (   R   i   (   R   i   (	   R   t   copyR   t	   identicalt   AssertionErrort   tostringt   pytestt   raisest	   TypeError(   t   selft   hat   hb(    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_identical_headers   s    $c         C   sH   t  d d	 d
 g ƒ } | j ƒ  } d | d <t | | ƒ j sD t ‚ d  S(   NR   i   R   i   R   i   i   (   R   i   (   R   i   (   R   i   (   R   R   R   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_slightly_different_headers!   s    
c         C   s`   t  d d d g ƒ } | j ƒ  } d | d <d | d
 <t | | ƒ j d d d g k s\ t ‚ d  S(   NR   i   R   i   R   i   i   i   t   Commentt   D(   R   i   (   R   i   (   R   i   (   i   R!   (   R   R   R   t   common_keywordsR   (   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_common_keywords'   s
    

c         C   s{   t  d d d	 g ƒ } | j ƒ  } | d =t | | ƒ } | j sG t ‚ | j d
 k s\ t ‚ | j d d g k sw t ‚ d  S(   NR   i   R   i   R   i   (   R   i   (   R   i   (   R   i   (   i   i   (   R   R   R   R   R   t   diff_keyword_countR#   (   R   R   R   t   diff(    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_keyword_count.   s    c         C   s   t  d d d g ƒ } | j ƒ  } d | d <d | d
 <d | d <d | d <t | | ƒ } | j sh t ‚ | j d d g d
 g f k sŒ t ‚ d  S(   NR   i   R   i   R   i   i   i   R!   R"   i   t   Ei   t   F(   R   i   (   R   i   (   R   i   (   i   R!   (   i   R!   (   i   R!   (   R   R   R   R   R   t   diff_keywords(   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_keywords9   s    



c         C   sm   t  d d	 d
 g ƒ } | j ƒ  } d | d <t | | ƒ } | j sJ t ‚ | j i d g d 6k si t ‚ d  S(   NR   i   R   i   R   i   i   (   R   i   (   R   i   (   R   i   (   i   i   (   R   R   R   R   R   t   diff_keyword_values(   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_keyword_valuesD   s    
c         C   sp   t  d	 d
 d g ƒ } | j ƒ  } d | j d <t | | ƒ } | j sM t ‚ | j i d g d 6k sl t ‚ d  S(   NR   i   R   i   R   i   s	   comment 1s	   comment 2(   R   i   (   R   i   (   R   i   s	   comment 1(   s	   comment 1s	   comment 2(   R   R   t   commentsR   R   R   t   diff_keyword_comments(   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_keyword_commentsL   s    c         C   s€   t  d	 d
 d g ƒ } | j ƒ  } | j d ƒ | j d ƒ t | | ƒ } | j sZ t ‚ | j i d  d g d 6k s| t ‚ d  S(   NR   i   R   i   R   i   i   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   i   i   (   R   R   t   appendR   R   R   R,   t   None(   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt,   test_different_keyword_values_with_duplicateU   s    c         C   sÕ   t  d d d g ƒ } | j ƒ  } | j d ƒ | j d ƒ | j d ƒ | j d ƒ t | | ƒ } | j st t ‚ | j i  k s‰ t ‚ | j i d d 6d d 6d d 6k s³ t ‚ | j ƒ  } d | k sÑ t ‚ d  S(   NR   i   R   i   R   i   s	   comment 1s	   comment 2i   s	   comment 3i   s	   comment 4sT   Inconsistent duplicates of keyword 'A'     :
  Occurs 3 time(s) in a, 1 times in (b)(   R   i   (   R   i   (   R   i   (   R   i   s	   comment 1(   R   i   s	   comment 2(   R   i   s	   comment 3(   R   i   s	   comment 4(   i   i   (   i   i   (   i   i   (	   R   R   R1   R   R   R   R,   t   diff_duplicate_keywordst   report(   R   R   R   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt"   test_asymmetric_duplicate_keywords^   s    $c         C   sé   t  d d d g ƒ } | j ƒ  } d | d <d | d <t | | ƒ } | j sT t ‚ | j i d g d 6d g d 6k s} t ‚ t | | d	 d
 ƒ} | j s¢ t ‚ | j i d g d 6k sÁ t ‚ t | | d	 d ƒ} | j så t ‚ d  S(   NR   i   R   g9b->  @R   g½7†  @grÄZ|
  @gzo @t   rtolgíµ ÷Æ°>gñhãˆµøä>(   R   i   (   R   g9b->  @(   R   g½7†  @(   g9b->  @grÄZ|
  @(   g½7†  @gzo @(   g9b->  @grÄZ|
  @(   R   R   R   R   R   R,   (   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_floating_point_rtolo   s    

#c         C   sÌ  t  d d d g ƒ } | j ƒ  } d | d <d | d <t | | d	 d ƒ} | j sZ t ‚ | j i d g d 6d g d 6k sƒ t ‚ t | | d	 d
 ƒ} | j s¨ t ‚ | j i d g d 6k sÇ t ‚ t | | d d ƒ} | j sì t ‚ | j i d g d 6k st ‚ t | | d d
 ƒ} | j s0t ‚ | j i d g d 6k sOt ‚ t | | d	 d
 d d
 ƒ} | j syt ‚ t | | d d ƒ} | j st ‚ t | | d	 d d d ƒ} | j sÈt ‚ d  S(   NR   i   R   g      ð?R   g        grÄZ|
 ð?gíµ ÷Æ°>R7   gñhãˆµøä>t   atolg¢&ú|”ç>(   R   i   (   R   g      ð?(   R   g        (   g      ð?grÄZ|
 ð?(   g        gíµ ÷Æ°>(   g        gíµ ÷Æ°>(   g      ð?grÄZ|
 ð?(   g      ð?grÄZ|
 ð?(   R   R   R   R   R   R,   (   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_floating_point_atol~   s4    

#c         C   sH  t  d d g ƒ } | j ƒ  } d | d <d | d <t t ƒ  } t | | d d ƒ} | d	 j t k so t ‚ t | d	 j ƒ d
 k sŽ t ‚ | j	 i d g d 6d g d 6k s· t ‚ | j
 sÇ t ‚ Wd QXt t ƒ i } t | | d d d d ƒ} | d	 j t k st ‚ t | d	 j ƒ d
 k s/t ‚ | j
 s>t ‚ Wd QXd S(   sc   Verify uses of tolerance and rtol.
        This test should be removed in the next astropy version.R   g      ð?R   gš™™™™™¹?grÄZ|
 ð?gP:‘`ª™¹?t	   tolerancegíµ ÷Æ°>i    so   "tolerance" was deprecated in version 2.0 and will be removed in a future version. Use argument "rtol" instead.NR7   gñhãˆµøä>(   R   g      ð?(   R   gš™™™™™¹?(   gš™™™™™¹?gP:‘`ª™¹?(   g      ð?grÄZ|
 ð?(   R   R   R   R   R   t   categoryR   t   strt   messageR,   R   (   R   R   R   t   warning_linesR&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_deprecation_toleranceš   s     

c      	   C   sÜ   t  j j d t ƒ Á t d	 d
 d g ƒ } | j ƒ  } d | d <| d | d k s[ t ‚ t | | ƒ } | j sy t ‚ | j	 i  k sŽ t ‚ t | | d t ƒ} | j s³ t ‚ | j	 i d g d 6k sÒ t ‚ Wd  QXd  S(   Nt   strip_header_whitespaceR   i   R   i   R   s   A       t   ignore_blanks(   R   i   (   R   i   (   R   s   A       (   s   A       R   (
   R   t   conft   set_tempt   FalseR   R   R   R   R   R,   (   R   R   R   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_ignore_blanksµ   s    
c         C   s!  t  d
 d d g ƒ } t  d d d d d g ƒ } | j ƒ  } | j ƒ  | j ƒ  t | | ƒ j sh t ‚ t | | ƒ j s€ t ‚ t | | ƒ j s˜ t ‚ t | | d t ƒj s· t ‚ t | | d t ƒj sÖ t ‚ t | | d t ƒj sô t ‚ | j ƒ  t | | d t ƒj st ‚ d	 S(   s`   Test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/152

        Ignore blank cards.
        R   i   R   i   R   i   t    t   ignore_blank_cardsN(   R   i   (   R   i   (   R   i   (   R   i   (   RG   RG   (   R   i   (   RG   RG   (   R   i   (   R   R   R1   R   R   R   RE   (   R   R   R   t   hc(    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_ignore_blank_cardsÆ   s    


c         C   s  t  d d d g ƒ } | j ƒ  } d | d <d | d <t | | d	 d
 g ƒ} | j s\ t ‚ t | | d	 d g ƒ} | j s„ t ‚ | j i d g d 6k s£ t ‚ | j ƒ  } d | k sÁ t ‚ d | k sÓ t ‚ t | | d	 d g ƒ} | j sû t ‚ | j i d g d 6k st ‚ d  S(   NR   i   R   i   R   i   i   i   t   ignore_keywordst   *s%   Keyword B        has different valuess%   Keyword C        has different valuest   b(   R   i   (   R   i   (   R   i   (   i   i   (   i   i   (   R   R   R   R   R   R,   R5   (   R   R   R   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_ignore_keyword_valueså   s    

c         C   s$  t  d d d g ƒ } | j ƒ  } d | j d <d | j d <t | | d	 d
 g ƒ} | j sb t ‚ t | | d	 d g ƒ} | j sŠ t ‚ | j i d g d 6k s© t ‚ | j ƒ  } d | k sÇ t ‚ d | k sÙ t ‚ t | | d	 d g ƒ} | j st ‚ | j i d g d 6k s t ‚ d  S(   NR   i   R   i   R   i   R"   R(   t   ignore_commentsRL   s'   Keyword B        has different commentss'   Keyword C        has different commentsRM   (   R   i   R   (   R   i   R   (   R   i   R   (   R   R(   (   R   R(   (   R   R   R.   R   R   R   R/   R5   (   R   R   R   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_ignore_keyword_commentsù   s    c         C   sg   t  j d ƒ j d ƒ } t  j d ƒ j d ƒ } t | | ƒ } | j sN t ‚ | j d k sc t ‚ d  S(   Nid   i
   i    (   i
   i
   (   i
   i
   (   t   npt   aranget   reshapeR   R   R   t
   diff_total(   R   t   iat   ibR&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_trivial_identical_images  s
    c         C   sc   t  j d ƒ d } t  j d ƒ d } t | | d d ƒ} | j sJ t ‚ | j d k s_ t ‚ d  S(	   Ni
   gñhãˆµøä>gñhãˆµøô>R7   g-Cëâ6?i    (   i
   i
   (   i
   i
   (   RQ   t   onesR   R   R   RT   (   R   RU   RV   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt(   test_identical_within_relative_tolerance  s
    c         C   s   t  j d	 ƒ d } t  j d
 ƒ d } t | | d d ƒ} | j sK t ‚ | j d k s` t ‚ t | | d d ƒ} | j s„ t ‚ | j d k s™ t ‚ d  S(   Ni
   gñhãˆµøä>gñhãˆµøô>R7   g-Cëâ6?id   R9   i    (   i
   i
   (   i
   i
   (   RQ   t   zerosR   R   R   RT   (   R   RU   RV   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt(   test_identical_within_absolute_tolerance  s    c         C   si   t  j d ƒ d } t  j d ƒ d } t | | d d d d ƒ} | j sP t ‚ | j d k se t ‚ d  S(	   Ni
   gñhãˆµøä>gñhãˆµøô>R7   R9   i    (   i
   i
   (   i
   i
   (   RQ   RZ   R   R   R   RT   (   R   RU   RV   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt#   test_identical_within_rtol_and_atol%  s
    c         C   sj   t  j d ƒ d } t  j d	 ƒ d } t | | d d d d ƒ} | j sQ t ‚ | j d k sf t ‚ d  S(
   Ni
   gñhãˆµøä>gñhãˆµøô>R7   R9   gíµ ÷Æ°>id   (   i
   i
   (   i
   i
   (   RQ   RZ   R   R   R   RT   (   R   RU   RV   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt'   test_not_identical_within_rtol_and_atol,  s
    c         C   s’   t  j d ƒ j d ƒ } t j d | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ } t j |  j d ƒ ƒ } t | | ƒ } | j	 sŽ t
 ‚ d S(   s¸  Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/189

        For this test we mostly just care that comparing to compressed images
        does not crash, and returns the correct results.  Two compressed images
        will be considered identical if the decompressed data is the same.
        Obviously we test whether or not the same compression was used by
        looking for (or ignoring) header differences.
        g      Y@i
   t   datas	   test.fitsN(   i
   i
   (   RQ   RR   RS   R   t   CompImageHDUt   writetot   tempt   openR   R   R   (   R   R^   t   hdut   hdulat   hdulbR&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_identical_comp_image_hdus3  s    
c         C   sÌ   t  j d ƒ j d	 ƒ } t  j d ƒ d } t | | ƒ } | j sJ t ‚ | j d
 d f k se t ‚ | j d k sz t ‚ | j ƒ  } d | k s˜ t ‚ d | k sª t ‚ d | k s¼ t ‚ d sÈ t ‚ d  S(   Nid   i
   i   i    s   Data dimensions differs
   a: 10 x 10s   b: 100s%   No further data comparison performed.(   i
   i
   (   i
   i
   (   id   (	   RQ   RR   RS   R   R   R   t   diff_dimensionsRT   R5   (   R   RU   RV   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_dimensionsE  s    c         C   sÍ   t  j d ƒ j d	 ƒ } t  j d ƒ j d
 ƒ } d | d <d | d <t | | ƒ } | j sc t ‚ | j d k sx t ‚ | j d k s t ‚ | j d k s¢ t ‚ | j	 d d f d d f g k sÉ t ‚ d  S(   Nid   i
   i    i   i   i   g{®Gáz”?i7   (   i
   i
   (   i
   i
   (   i    i    (   i   i   (    (   i    i    (   i    i
   (   i   i   (   i7   i   (
   RQ   RR   RS   R   R   R   Rg   RT   t
   diff_ratiot   diff_pixels(   R   RU   RV   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_pixelsV  s    

c         C   so  t  d d d d t t g ƒ} t  d d d d d g d g g ƒ} t  d	 d d
 d d d d d d d g d d d d g g ƒ} t  d d d d d d d d g ƒ} t  d d d d d d g ƒ} t  d d d d d d d d g ƒ} t  d  d d d! d" d d d g ƒ} t  d# d d	 d d8 d9 g ƒ} t  d& d d' d d: d; g ƒ}	 t  d d d, d d d g d d g g ƒ}
 | | | | | | | | |	 |
 g
 } t j | ƒ } t j g  | D] } | j ƒ  ^ q®ƒ } t | j | j ƒ } | j sít	 ‚ t
 | j ƒ d- k st	 ‚ | j t d. d/ d0 d1 d2 d3 d4 d5 d6 d7 g
 ƒ k sAt	 ‚ | j d k sVt	 ‚ | j d k skt	 ‚ d  S(<   NR   t   formatt   Lt   arrayR   t   Xi    i   R   t   4It   dims   (2, 2)i   i   i   i   i   i   R"   t   Jt   bscaleg       @R(   t   A3t   abct   defR)   t   unitt   mg        g      ð?t   Gt   bzerogš™™™™™¹¿t   Hy              ð?y              @t   It   Mg      @y              @g      @y              @s   PI(2)i
   t   aRM   t   ct   dt   et   ft   gt   ht   it   jy              ð?y       @      @y      @      @y      @      @(   R    t   TrueRE   R
   t   from_columnsR   R   R^   R   R   t   lent   common_columnst   common_column_namest   setRi   RT   (   R   t   c1t   c2t   c3t   c4t   c5t   c6t   c7t   c8t   c9t   c10t   columnst   taR   t   tbR&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_identical_tablesb  s*    $'$$$*$(3c         C   s…   t  d d d ƒ} t  d d d ƒ} t j | | g d d ƒ} t j | g ƒ } t j | g ƒ } t | | ƒ } | j s t ‚ d S(   s    
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/178

        Ensure that diffing tables containing empty data doesn't crash.
        R"   Rl   Rr   R(   t   nrowsi    N(   R    R
   Rˆ   R   R   R   R   R   (   R   R   RŽ   t   thduRd   Re   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_diff_empty_tables|  s    c   	      C   s¥  t  d d d d t t g ƒ} t  d d d d d g d g g ƒ} t  d	 d d
 d d d d d d d g d d d d g g ƒ} t  d d d d d g d g g ƒ} t  d	 d d
 d d d d d d d g d d d d g g ƒ} t j | | | g ƒ } t j | | | g ƒ } t | j | j d d d	 g ƒ} | j s>t ‚ t	 | j
 ƒ d k sYt ‚ | j t d g ƒ k swt ‚ | j d k sŒt ‚ | j d k s¡t ‚ d  S(   NR   Rl   Rm   Rn   R   Ro   i    i   R   Rp   Rq   s   (2, 2)i   i   i   i   i   i   i   t   ignore_fieldsR~   (   R    R‡   RE   R
   Rˆ   R   R^   R   R   R‰   RŠ   R‹   RŒ   Ri   RT   (	   R   R   RŽ   R   R   R‘   R˜   R™   R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_ignore_table_fields  s    $'$'!c         C   sa  t  d d d d t t g ƒ} t  d d d d t t g ƒ} t  d d d d t t g ƒ} t j | | g ƒ } t j | | g ƒ } t | j | j ƒ } | j s© t ‚ t	 | j
 ƒ d k sÄ t ‚ | j t d g ƒ k sâ t ‚ | j d g d g f k st ‚ | j d	 k st ‚ | j d	 k s-t ‚ | j ƒ  } d
 | k sKt ‚ d | k s]t ‚ d  S(   NR   Rl   Rm   Rn   R   R   i   R~   i    s   Extra column B of format L in as   Extra column C of format L in b(   R    R‡   RE   R
   Rˆ   R   R^   R   R   R‰   RŠ   R‹   RŒ   t   diff_column_namesRi   RT   R5   (   R   t   cat   cbt   ccR˜   R™   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt    test_different_table_field_names£  s    !c         C   sv  t  d d d d t t g ƒ} t  d d d d t t g ƒ} t  d d d d t t g ƒ} t j | g ƒ } t j | | | g ƒ } t | j | j ƒ } | j s© t ‚ | j	 d k s¾ t ‚ t
 | j ƒ d k sÙ t ‚ | j t d	 g ƒ k s÷ t ‚ | j g  d d g f k st ‚ | j d
 k s-t ‚ | j d
 k sBt ‚ | j ƒ  } d | k s`t ‚ d | k srt ‚ d S(   sh   
        Test tables with some common columns, but different number of columns
        overall.
        R   Rl   Rm   Rn   R   R   i   i   RM   i    s)    Tables have different number of columns:s     a: 1
  b: 3N(   i   i   (   R    R‡   RE   R
   Rˆ   R   R^   R   R   t   diff_column_countR‰   RŠ   R‹   RŒ   R    Ri   RT   R5   (   R   R¡   R¢   R£   R˜   R™   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt!   test_different_table_field_counts¸  s     !c   	      C   sy  t  d d d d t t g ƒ} t  d d d d t t g ƒ} t  d d d d t t t g ƒ} t  d d d d t t t g ƒ} t j | | g ƒ } t j | | g ƒ } t | j | j ƒ } | j sÍ t ‚ | j	 d k sâ t ‚ t
 | j ƒ d k sý t ‚ | j d k st ‚ | j g  k s't ‚ | j ƒ  } d | k sEt ‚ d	 | k sWt ‚ d
 | k sit ‚ d sut ‚ d S(   sh   
        Test tables that are otherwise identical but one has more rows than the
        other.
        R   Rl   Rm   Rn   R   i   i   s   Table rows differs   a: 2s   b: 3s%   No further data comparison performed.N(    (   i   i   (   R    R‡   RE   R
   Rˆ   R   R^   R   R   R¥   R‰   RŠ   t	   diff_rowst   diff_valuesR5   (	   R   t   ca1t   cb1t   ca2t   cb2R˜   R™   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_table_rowsÓ  s"    !!c         C   sÒ  t  d d d d t t g ƒ} t  d d d d d g d g g ƒ} t  d	 d d
 d d d d d d d g d d d d g g ƒ} t  d d d d d d d d g ƒ} t  d d d d d d g ƒ} t  d d d d d d d d g ƒ} t  d  d d d! d" d d d g ƒ} t  d# d d	 d d> d? g ƒ} t  d& d d' d d@ dA g ƒ}	 t  d d d, d d d g d d g g ƒ}
 t  d d d d t t g ƒ} t  d d d d d g d g g ƒ} t  d	 d d
 d d d d d d d g d d d d- g g ƒ} t  d d d d d d d d g ƒ} t  d d d d d d. g ƒ} t  d d d d d d d d g ƒ} t  d  d d d! d" d d d/ g ƒ} t  d# d d	 d dB dC g ƒ} t  d& d d' d dD dE g ƒ} t  d d d, d d d g d d g g ƒ} t j | | | | | | | | |	 |
 g
 ƒ } t j | | | | | | | | | | g
 ƒ } t | j | j d1 d2 ƒ} | j sat ‚ | j	 dF k svt ‚ | j
 d dG t t f f k s›t ‚ | j
 d dH d g d g f f k sÆt ‚ | j
 d d dI k sãt ‚ | j
 d d d d d g d d g g k j ƒ  st ‚ | j
 d d d d d g d d- g g k j ƒ  sUt ‚ | j
 d dJ dK f k stt ‚ | j
 d dL dM f k s“t ‚ | j
 d dN dO f k s²t ‚ | j
 d dP dQ f k sÑt ‚ | j
 d dR dS f k sðt ‚ | j
 d- dT dU f k st ‚ | j
 d3 dV dW dX f f k s4t ‚ | j
 d4 dY dZ d[ f f k sYt ‚ | j
 d5 d d\ k svt ‚ | j
 d5 d d d d g k j ƒ  s£t ‚ | j
 d5 d d d d g k j ƒ  sÐt ‚ | j
 d6 d d] k sít ‚ | j
 d6 d d d d g k j ƒ  st ‚ | j
 d6 d d d d g k j ƒ  sGt ‚ | j d7 k s\t ‚ | j d8 k sqt ‚ | j ƒ  } d9 | k st ‚ d: | k s¡t ‚ d; | k s³t ‚ | j d< ƒ d k sÎt ‚ d= S(^   sn   
        Test diffing table data on columns of several different data formats
        and dimensions.
        R   Rl   Rm   Rn   R   Ro   i    i   R   Rp   Rq   s   (2, 2)i   i   i   i   i   i   R"   Rr   Rs   g       @g        R(   Rt   Ru   Rv   R)   Rw   Rx   g      ð?Ry   Rz   gš™™™™™¹¿R{   y              ð?y              @R|   R}   g      @y              @g      @y              @s   PI(2)i   t   ghig      @g      @t   numdiffsi   i	   i
   i   i   i   gÍÌÌÌÌÌä?s8   Column A data differs in row 0:
    a> True
    b> Falses;   ...and at 13 more indices.
 Column D data differs in row 0:s;   13 different table data element(s) found (65.00% different)s   more indicesNy              ð?y       @      @y      @      @y      @      @y      ð?      ð?y       @      @y      @      @y      @      @(    (   R   i    (   R   i   (   R   i   (   R"   i    (   i    g       @(   R(   i   (   Rv   R®   (   R)   i    (   g        g      ð?(   R)   i   (   g      ð?g       @(   Ry   i    (   g        g       @(   Ry   i   (   g      ð?g      @(   R{   i    y              ð?y      ð?      ð?(   R|   i    y      @      @y      @      @(   Rr   i    (   Rr   i   (   R    R‡   RE   R
   Rˆ   R   R^   R   R   t   diff_columnsR¨   t   allRT   Ri   R5   t   count(   R   R©   R«   t   ca3t   ca4t   ca5t   ca6t   ca7t   ca8t   ca9t   ca10Rª   R¬   t   cb3t   cb4t   cb5t   cb6t   cb7t   cb8t   cb9t   cb10R˜   R™   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_different_table_datað  st    $'$$$*$'$$$*%+99%%----c         C   s#  t  j d ƒ j d
 ƒ } t d | ƒ } | j |  j d ƒ ƒ | j |  j d ƒ ƒ t |  j d ƒ |  j d ƒ ƒ } | j sƒ t ‚ | j	 ƒ  } d | k s¡ t ‚ d | k s³ t ‚ d | k sÅ t ‚ t  j d ƒ } t
 d | ƒ } t | | ƒ } | j st ‚ | j	 ƒ  } d | k st ‚ d	 S(   s5   Test identicality of two simple, extensionless files.id   i
   R^   s
   testa.fitss
   testb.fitss   Primary HDUs   Extension HDUs   No differences found.N(   i
   i
   (   RQ   RR   RS   R   R`   Ra   R   R   R   R5   R	   R   (   R   R~   Rc   R&   R5   t   ehdu(    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_identical_files_basic8  s     !c         C   sì   t  j d ƒ j d
 ƒ } t d | ƒ } t d | ƒ } t | | g ƒ } t | | | g ƒ } t | | ƒ } | j s| t ‚ | j	 d k s‘ t ‚ | j
 g  k s¦ t ‚ | j ƒ  } d | k sÄ t ‚ d | k sÖ t ‚ d | k sè t ‚ d	 S(   sc   
        Test files that have some identical HDUs but a different extension
        count.
        id   i
   R^   i   i   s'   Files contain different numbers of HDUss
   a: 2
 b: 3s(   No differences found between common HDUsN(   i
   i
   (   i   i   (   RQ   RR   RS   R   R	   R   R   R   R   t   diff_hdu_countt	   diff_hdusR5   (   R   R~   t   phduRÄ   Rd   Re   R&   R5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_partially_identical_files1O  s    c         C   sÉ  t  j d ƒ j d ƒ } t d | ƒ } t d | ƒ } t d | d ƒ } t | | | g ƒ } t | | | g ƒ } t | | ƒ } | j s’ t ‚ | j	 d k s§ t ‚ t
 | j ƒ d k sÂ t ‚ | j d d d k sß t ‚ | j d d } | j s t ‚ | j d k st ‚ | j d k s*t ‚ | j d k s?t ‚ | j j sQt ‚ | j d k	 sft ‚ | j }	 t |	 t ƒ s„t ‚ |	 j s”t ‚ |	 j d k s©t ‚ |	 j g  t d ƒ D]" }
 d |
 f |
 |
 d f f ^ q¼k sít ‚ |	 j d k st ‚ |	 j d k st ‚ | j ƒ  } d | k s5t ‚ d | k sGt ‚ d	 | k sYt ‚ d
 | k skt ‚ d | k s}t ‚ x3 t d ƒ D]% }
 d j |
 d ƒ | k sŠt ‚ qŠWd | k sÅt ‚ d S(   sQ   
        Test files that have some identical HDUs but one different HDU.
        id   i
   R^   i   i    g      ð?s   Primary HDUs   Extension HDU 2s   Extension HDU 1s   Headers contain differencess   Data contains differencess   Data differs at [{}, 1]s/   100 different pixels found (100.00% different).N(   i
   i
   (    (    (    (    (    (   RQ   RR   RS   R   R	   R   R   R   R   RÆ   R‰   RÇ   t   diff_extnamest   diff_extverst   diff_extension_typest   diff_headerst	   diff_dataR2   t
   isinstanceR   Rg   Rj   R   Ri   RT   R5   Rl   (   R   R~   RÈ   RÄ   t   ehdu2Rd   Re   R&   t   hdudifft   datadifft   yR5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_partially_identical_files2g  sF    	>#c         C   s¦  t  ƒ  } t d d ƒ } t | | g ƒ } t d d ƒ } d | j d <d | j d <t | | g ƒ } t | | ƒ } | j s„ t ‚ | j d d d	 k s¡ t ‚ | j d d	 } | j	 d k sÇ t ‚ | j
 d k sÜ t ‚ | j d k sñ t ‚ | j d k st ‚ | j ƒ  } d | k s$t ‚ d | k s6t ‚ d | k sHt ‚ d | k sZt ‚ d | k slt ‚ d | k s~t ‚ d | k st ‚ d | k s¢t ‚ d S(   sb   
        Test files that have some identical HDUs but a different extension
        name.
        t   namet   FOOt   BARi   t   EXTVERi   t   EXTLEVELi    i   t   IMAGEt   BINTABLEs   Extension types differs   a: IMAGE
    b: BINTABLEs   Extension names differs   a: FOO
    b: BARs   Extension versions differs   a: 1
    b: 2s   Extension levels differN(   RÚ   RÛ   (   RÖ   R×   (   i   i   (   i   i   (   R   R	   R   R
   t   headerR   R   R   RÇ   RÌ   RÊ   RË   t   diff_extlevelsR5   (   R   RÈ   RÄ   Rd   Re   R&   t   hdu_diffR5   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_partially_identical_files3–  s0    	c         C   s;  t  j d d t  j ƒ} d | d *t  j | d )| j ƒ  } t  j j d d t  j f t  j t  j f g d d d	 g ƒj t j	 ƒ } | j ƒ  } t
 | | ƒ j s§ t ‚ t | | ƒ j s¿ t ‚ d | d
 d
 <d | d d
 <d | d
 d
 <d | d d <t
 | | ƒ } | j st ‚ | j d
 d d f k s5t ‚ | j d d
 d k sRt ‚ t  j | j d d d
 ƒ svt ‚ | j d d d d k s—t ‚ t | | ƒ } | j s¶t ‚ | j d
 d d f k sÕt ‚ | j d d
 d k sòt ‚ t  j | j d d d
 ƒ st ‚ | j d d d d k s7t ‚ d S(   sE   Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/204i
   t   dtypeg      ð?i   g       @g      @t   namest   colat   colbi    i   N(   i
   i
   (   g      ð?g       @(   i    i    (   g      ð?g       @(   i   i    (   Râ   i    (   g      ð?g       @(   Rã   i   (   RQ   t   emptyt   float64t   nanR   t   recRn   t   viewR   t   FITS_recR   R   R   R   Rj   t   isnanR¨   (   R   t   arrt   arr2t   tablet   table2R&   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_diff_nans¸  s2    
-$!$c         C   sS   t  j ƒ  } d } d } t | | | ƒ | j ƒ  } | j d ƒ d k sO t ‚ d S(   sT   
        Regression test for https://github.com/astropy/astropy/issues/4122
        g      ð?s   1.0t   us7     (float) a> 1.0
    (str) b> '1.0'
           ? +   +
N(   t   iot   StringIOR   t   getvaluet   lstripR   (   R   R‚   R~   RM   t   out(    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_diff_typesÝ  s    c         C   sn   t  j ƒ  } t j d ƒ } t j d ƒ } t | | | ƒ | j ƒ  } d | k sX t ‚ d | k sj t ‚ d S(   sX   
        Regression test for https://github.com/spacetelescope/PyFITS/issues/21
        gA(Ç$wž?g øH‚$wž?s   a>s   b>N(   Rñ   Rò   RQ   t   float32R   Ró   R   (   R   R‚   R~   RM   Rõ   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   test_float_comparisonì  s    c         C   s‡   |  j  d ƒ } t d
 d d g ƒ } | j ƒ  } d | d <t | | ƒ } | j d	 | ƒ | j ƒ  } t | ƒ j ƒ  | k sƒ t ‚ d  S(   Ns   diff_output.txtR   i   R   i   R   i   i   t   fileobj(   R   i   (   R   i   (   R   i   (   Ra   R   R   R   R5   Rb   t   readR   (   R   t   outpathR   R   t   diffobjt   report_as_string(    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt!   test_file_output_from_path_stringþ  s    
c         C   sƒ   |  j  d ƒ } t d
 d d g ƒ } | j ƒ  } d | d <t | | ƒ } | j d	 | ƒ t j t ƒ  | j d	 | ƒ Wd  QXd  S(   Ns   diff_output.txtR   i   R   i   R   i   i   Rù   (   R   i   (   R   i   (   R   i   (   Ra   R   R   R   R5   R   R   t   IOError(   R   Rû   R   R   Rü   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt!   test_file_output_overwrite_safety  s    
c         C   s£   |  j  d ƒ } t d d d g ƒ } | j ƒ  } d | d <t | | ƒ } | j d	 | ƒ | j ƒ  } | j d	 | d
 t ƒ t | ƒ j ƒ  | k sŸ t d ƒ ‚ d  S(   Ns   diff_output.txtR   i   R   i   R   i   i   Rù   t	   overwrites9   overwritten output file is not identical to report string(   R   i   (   R   i   (   R   i   (	   Ra   R   R   R   R5   R‡   Rb   Rú   R   (   R   Rû   R   R   Rü   Rý   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt"   test_file_output_overwrite_success  s    
c      	   C   sÌ   |  j  d ƒ } t d d d g ƒ } | j ƒ  } d | d <t | | ƒ } | j d	 | ƒ | j ƒ  } t t ƒ U } | j d	 | d
 t ƒ | d j t k s£ t	 ‚ t
 | d j ƒ d k sÂ t	 ‚ Wd QXd S(   s%   Verify uses of clobber and overwrite.s   diff_output.txtR   i   R   i   R   i   i   Rù   t   clobberi    sr   "clobber" was deprecated in version 2.0 and will be removed in a future version. Use argument "overwrite" instead.N(   R   i   (   R   i   (   R   i   (   Ra   R   R   R   R5   R   R   R‡   R<   R   R=   R>   (   R   Rû   R   R   Rü   Rý   R?   (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt%   test_file_output_overwrite_vs_clobber  s    
(,   t   __name__t
   __module__R   R    R$   R'   R+   R-   R0   R3   R6   R8   R:   R@   RF   RJ   RN   RP   RW   RY   R[   R\   R]   Rf   Rh   Rk   Rš   R   RŸ   R¤   R¦   R­   RÃ   RÅ   RÉ   RÔ   Rß   Rï   Rö   Rø   Rþ   R   R  R  (    (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyR      sT   																						
												H			/	"	%			
		(   Rñ   R   t   numpyRQ   t   columnR    R&   R   R   R   R   R   R   Rc   R   R   R	   t	   hdu.tableR
   RÜ   R   t   tests.helperR   t   utils.exceptionsR   t   extern.six.movesR   R   RG   R   R   (    (    (    s>   lib/python2.7/site-packages/astropy/io/fits/tests/test_diff.pyt   <module>   s   .