ó
šßÈ[c           @  sE  d  d l  m Z d  d l Z d  d l Z d d l m Z d d l m Z m	 Z	 y d  d l
 Z
 Wn e k
 rw e Z n Xe Z y d  d l Z Wn e k
 r§ e Z n Xe Z e j e j e j e j e j e j e j e j e j e j e j d g Z d „  Z e j j d ƒ d	 „  ƒ Z  e j j d ƒ d
 „  ƒ Z! e j j d ƒ d „  ƒ Z" e j j d ƒ d „  ƒ Z# e j j d ƒ d „  ƒ Z$ e j j d ƒ d „  ƒ Z% e j j d ƒ d „  ƒ Z& e j j d ƒ d „  ƒ Z' e j j d ƒ d „  ƒ Z( e j j d ƒ d „  ƒ Z) e j j d ƒ d „  ƒ Z* e j j d ƒ d „  ƒ Z+ e j j d ƒ d „  ƒ Z, e j j d ƒ d „  ƒ Z- e j j d ƒ d „  ƒ Z. e j j d ƒ d „  ƒ Z/ e j j d ƒ d „  ƒ Z0 e j j d ƒ d „  ƒ Z1 e j j d ƒ d „  ƒ Z2 e j j d ƒ d „  ƒ Z3 e j j d ƒ d „  ƒ Z4 e j j d ƒ d „  ƒ Z5 e j j d ƒ d „  ƒ Z6 e j j d ƒ e j j7 d  e ƒ d! „  ƒ ƒ Z8 e j j d ƒ d" „  ƒ Z9 e j j d ƒ d# „  ƒ Z: e j j d$ ƒ d% „  ƒ Z; e j j d$ ƒ d& „  ƒ Z< e j j d ƒ d' „  ƒ Z= e j j d ƒ d( „  ƒ Z> d S()   iÿÿÿÿ(   t   print_functionNi   (   t   catch_warnings(   t   Tablet   Columns   |S3c         C  sF   |  t  j k r d d d g S|  d k r5 d d d g Sd d d g Sd  S(	   Ni    i   s   |S3t   abct   deft   ghii   i   (   t   npt   bool(   t   dtype(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   _default_values   s
    s   not HAS_H5PYc         C  sˆ   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ t j t ƒ  } | j | ƒ Wd  QX| j	 j
 d d	 k s„ t ‚ d  S(
   Ns	   test.hdf5t   namet   at   datai   i   i   i    s/   table path should be set via the path= argument(   t   strt   joinR   t
   add_columnR   t   pytestt   raisest
   ValueErrort   writet   valuet   argst   AssertionError(   t   tmpdirt	   test_filet   t1t   exc(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_write_nopath'   s    	%c      
   C  s~   t  |  j d ƒ ƒ } t j | d ƒ j ƒ  t j t ƒ " } t j	 | d d d d ƒ} Wd  QX| j
 j d d k sz t ‚ d  S(	   Ns	   test.hdf5t   wt   patht   /t   formatt   hdf5i    s   no table found in HDF5 group /(   R   R   t   h5pyt   Filet   closeR   R   R   R   t   readR   R   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_notable_nopath1   s
    !c         C  sŒ   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒt j | ƒ } t j | d | d k ƒ sˆ t	 ‚ d  S(
   Ns	   test.hdf5R   R   R   i   i   i   R   t	   the_table(
   R   R   R   R   R   R   R%   R   t   allR   (   R   R   R   t   t2(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_nopath:   s    	%c         C  sŽ   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ t j t ƒ  } | j | d d	 ƒWd  QX| j	 j
 d
 d k sŠ t ‚ d  S(   Ns	   test.hdf5R   R   R   i   i   i   R   s   test/i    s,   table path should end with table name, not /(   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_write_invalid_pathD   s    	%c         C  s¡   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒt j t ƒ  } t j	 | d d
 ƒWd  QX| j
 j d d k s t ‚ d  S(   Ns	   test.hdf5R   R   R   i   i   i   R   R'   s   test/i    s   Path test/ does not exist(   R   R   R   R   R   R   R   R   t   IOErrorR%   R   R   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_invalid_pathN   s    	%c         C  sv   t  |  j d ƒ ƒ } t j | d ƒ j ƒ  t j t ƒ  } t j	 | d d ƒWd  QX| j
 j d d k sr t ‚ d  S(   Ns	   test.hdf5R   R   s   test/path/tablei    s#   Path test/path/table does not exist(   R   R   R"   R#   R$   R   R   R,   R   R%   R   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_missing_groupY   s
    c      	   C  s‘   t  |  j d ƒ ƒ } t j | d ƒ  } | j d ƒ j d ƒ Wd  QXt j t ƒ  } t j	 | d d ƒWd  QX| j
 j d d k s t ‚ d  S(   Ns	   test.hdf5R   t   testR   s   test/path/tablei    s#   Path test/path/table does not exist(   R   R   R"   R#   t   create_groupR   R   R,   R   R%   R   R   R   (   R   R   t   fR   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_missing_tableb   s    c         C  s{   t  |  j d ƒ ƒ } t j | d ƒ N } t j t ƒ  } t j | d d ƒWd  QX| j	 j
 d d k sq t ‚ Wd  QXd  S(   Ns	   test.hdf5R   R   s   test/path/tablei    s#   Path test/path/table does not exist(   R   R   R"   R#   R   R   R,   R   R%   R   R   R   (   R   R   R1   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_missing_group_fileobjl   s
    c         C  s—   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒt j | d d	 ƒ} t j | d d d d g k ƒ s“ t	 ‚ d  S(
   Ns	   test.hdf5R   R   R   i   i   i   R   R'   (
   R   R   R   R   R   R   R%   R   R(   R   (   R   R   R   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_write_simpleu   s    	%c      
   C  s§   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒt j t ƒ   } | j | d d	 d
 t	 ƒWd  QX| j
 j d d k s£ t ‚ d  S(   Ns	   test.hdf5R   R   R   i   i   i   R   R'   t   appendi    s   Table the_table already exists(   R   R   R   R   R   R   R   R   R,   t   TrueR   R   R   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_write_existing_table   s    	%c         C  s©   t  j d d d d d t ƒ… } t ƒ  } | j t d d d d	 d
 d g ƒ ƒ | j | d d ƒt j | d d ƒ} t j	 | d d	 d
 d g k ƒ sŸ t
 ‚ Wd  QXd  S(   NR/   R   t   drivert   coret   backing_storeR   R   R   i   i   i   R   R'   (   R"   R#   t   FalseR   R   R   R   R%   R   R(   R   (   R   t   output_fileR   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_write_memoryŠ   s    !	%c         C  s§   t  |  j d ƒ ƒ } t j | d ƒ j ƒ  t ƒ  } | j t d d d d d d g ƒ ƒ t j	 t
 ƒ  } | j | d	 d
 ƒWd  QX| j j d j d ƒ s£ t ‚ d  S(   Ns	   test.hdf5R   R   R   R   i   i   i   R   R'   i    s   File exists:(   R   R   R"   R#   R$   R   R   R   R   R   R,   R   R   R   t
   startswithR   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_write_existing”   s    	%c         C  s³   t  |  j d ƒ ƒ } t j | d ƒ j ƒ  t ƒ  } | j t d d d d d d g ƒ ƒ | j | d	 d
 d t	 ƒt j
 | d	 d
 ƒ} t j | d d d d g k ƒ s¯ t ‚ d  S(   Ns	   test.hdf5R   R   R   R   i   i   i   R   R'   t	   overwrite(   R   R   R"   R#   R$   R   R   R   R   R6   R%   R   R(   R   (   R   R   R   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt"   test_read_write_existing_overwriteŸ   s    	%c         C  s	  t  |  j d ƒ ƒ } t j | d ƒ j ƒ  t ƒ  } | j t d d d d d d g ƒ ƒ | j | d	 d
 d t	 ƒ| j | d	 d d t	 ƒt j
 | d	 d
 ƒ} t j | d d d d g k ƒ sÈ t ‚ t j
 | d	 d ƒ} t j | d d d d g k ƒ st ‚ d  S(   Ns	   test.hdf5R   R   R   R   i   i   i   R   t   the_table_1R5   t   the_table_2(   R   R   R"   R#   R$   R   R   R   R   R6   R%   R   R(   R   (   R   R   R   R)   t   t3(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_write_existing_appendª   s    	%(c      	   C  s  t  |  j d ƒ ƒ } t j | d ƒ  } | j d ƒ Wd  QXt ƒ  } | j t d d d d d d	 g ƒ ƒ | j | d
 d d t	 ƒ| j | d
 d d t	 ƒt j
 | d
 d ƒ} t j | d d d d	 g k ƒ sÚ t ‚ t j
 | d
 d ƒ} t j | d d d d	 g k ƒ st ‚ d  S(   Ns	   test.hdf5R   t   test_1R   R   R   i   i   i   R   s   test_1/the_table_1R5   s   test_2/the_table_2(   R   R   R"   R#   R0   R   R   R   R   R6   R%   R   R(   R   (   R   R   R1   R   R)   RD   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt&   test_read_write_existing_append_groups¸   s    	%(c      
   C  s‡  t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒ| j | d d
 d t ƒt ƒ  } | j t d d d d d d g ƒ ƒ t j t	 ƒ   } | j | d d	 d t ƒWd  QX| j
 j d d k sê t ‚ | j | d d	 d t d t ƒt j | d d	 ƒ} t j | d d d d g k ƒ sFt ‚ t j | d d
 ƒ} t j | d d d d g k ƒ sƒt ‚ d  S(   Ns	   test.hdf5R   R   R   i   i   i   R   t   table1t   table2R5   i   i   i   i    s   Table table1 already existsR@   (   R   R   R   R   R   R   R6   R   R   R,   R   R   R   R%   R   R(   (   R   R   R   t   t1v2R   R)   RD   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt)   test_read_write_existing_append_overwriteÇ   s    	%	%(c      	   C  s¾   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒd
 d  l } | j | d ƒ D } t j | d d	 ƒ} t	 j
 | d d d d g k ƒ s´ t ‚ Wd  QXd  S(   Ns	   test.hdf5R   R   R   i   i   i   R   R'   iÿÿÿÿt   r(   R   R   R   R   R   R   R"   R#   R%   R   R(   R   (   R   R   R   R"   t
   input_fileR)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_fileobjÚ   s    	%c      	   C  s¾   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒd
 d  l } | j | d ƒ D } t j | d d	 ƒ} t	 j
 | d d d d g k ƒ s´ t ‚ Wd  QXd  S(   Ns	   test.hdf5R   R   R   i   i   i   R   s   path/to/data/the_tableiÿÿÿÿRL   (   R   R   R   R   R   R   R"   R#   R%   R   R(   R   (   R   R   R   R"   RM   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_filobj_pathé   s    	%c      	   C  sÂ   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ | j | d d	 ƒd
 d  l } | j | d ƒ H } t j | d d d ƒ} t	 j
 | d d d d g k ƒ s¸ t ‚ Wd  QXd  S(   Ns	   test.hdf5R   R   R   i   i   i   R   s   path/to/data/the_tableiÿÿÿÿRL   s   path/tos   data/the_table(   R   R   R   R   R   R   R"   R#   R%   R   R(   R   (   R   R   R   R"   RM   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_filobj_group_pathø   s    	%c          C  sl   d t  f d „  ƒ  Y}  |  ƒ  } t j t ƒ  } t j | d d ƒ} Wd  QX| j j d d k sh t ‚ d  S(   Nt   FakeFilec           B  s   e  Z d  „  Z RS(   c         S  s   d  S(   N(    (   t   self(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyR%     s    (   t   __name__t
   __module__R%   (    (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyRQ   
  s   R    R!   i    s    h5py can only open regular files(	   t   objectR   R   t	   TypeErrorR   R%   R   R   R   (   RQ   R1   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_wrong_fileobj  s
    	c         C  s¾   t  |  j d ƒ ƒ } d d  l } | j | d ƒ H } t ƒ  } | j t d d d d d d	 g ƒ ƒ | j | d
 d ƒWd  QXt j | d
 d ƒ} t	 j
 | d d d d	 g k ƒ sº t ‚ d  S(   Ns	   test.hdf5iÿÿÿÿR   R   R   R   i   i   i   R   R'   (   R   R   R"   R#   R   R   R   R   R%   R   R(   R   (   R   R   R"   R<   R   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_write_fileobj  s    	%c         C  s¾   t  |  j d ƒ ƒ } d d  l } | j | d ƒ H } t ƒ  } | j t d d d d d d	 g ƒ ƒ | j | d
 d ƒWd  QXt j | d
 d ƒ} t	 j
 | d d d d	 g k ƒ sº t ‚ d  S(   Ns	   test.hdf5iÿÿÿÿR   R   R   R   i   i   i   R   s   path/to/data/the_table(   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/misc/tests/test_hdf5.pyt   test_write_filobj_group$  s    	%c       
   C  s   t  ƒ  }  |  j t d d d d d d g ƒ ƒ t j t ƒ   } |  j d d d	 d
 d ƒWd  QX| j j d d k s{ t	 ‚ d  S(   NR   R   R   i   i   i   i¼  R   s   path/to/data/the_tableR    R!   i    s9   output should be a string or an h5py File or Group object(
   R   R   R   R   R   RV   R   R   R   R   (   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_write_wrong_type3  s
    	%R	   c      	   C  s¹   t  |  j d ƒ ƒ } t | ƒ } t ƒ  } | j t d d d t j | d | ƒƒ ƒ | j | d d ƒt j	 | d d ƒ} t j
 | d | k ƒ sœ t ‚ | d j | k sµ t ‚ d  S(   Ns	   test.hdf5R   R   R   R	   R   R'   (   R   R   R
   R   R   R   R   t   arrayR   R%   R(   R   R	   (   R   R	   R   t   valuesR   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_preserve_single_dtypes>  s    	+c      
   C  sù   t  |  j d ƒ ƒ } t ƒ  } xK t D]C } t | ƒ } | j t d t  | ƒ d t j | d | ƒƒ ƒ q% W| j	 | d d ƒt j
 | d d ƒ} x^ t D]V } t | ƒ } t j | t  | ƒ | k ƒ sÒ t ‚ | t  | ƒ j | k s› t ‚ q› Wd  S(   Ns	   test.hdf5R   R   R	   R   R'   (   R   R   R   t
   ALL_DTYPESR
   R   R   R   R[   R   R%   R(   R   R	   (   R   R   R   R	   R\   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_preserve_all_dtypesP  s    	5%c         C  sÿ   t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ d | j d <d | j d	 <d
 | j d <t | j d <t j d d d g ƒ | j d <| j	 | d d ƒt j
 | d d ƒ} x: | j D]/ } t j | j | | j | k ƒ sÈ t ‚ qÈ Wd  S(   Ns	   test.hdf5R   R   R   i   i   i   t   hellot   bgn†ðù!	@t   ct   dt   eR   R'   (   R   R   R   R   R   t   metaR6   R   R[   R   R%   R(   R   (   R   R   R   R)   t   key(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_preserve_metae  s    	%s   not HAS_H5PY or not HAS_YAMLc         C  s€  t  |  j d ƒ ƒ } t ƒ  } t d d d d g d d ƒ | d <d	 | d j d
 <i d d g d 6| d j d <d | d _ d | d _ d | j d <i d d g d 6| j d <| j | d d d t d t ƒt j	 | d d ƒ} | d j
 | d j
 k st ‚ | d j | d j k s$t ‚ | d j | d j k sDt ‚ | d j | d j k sdt ‚ | j | j k s|t ‚ d  S(   Ns	   test.hdf5R   i   i   i   t   unitt   sR   t   A0t   a0i    t   a1s   7.3fs   A columnRa   t   c0Rb   R   R'   t   serialize_metaR@   (   R   R   R   R   Re   R    t   descriptionR   R6   R%   Rh   R   (   R   R   R   R)   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_preserve_serialized{  s     	"    c         C  sÙ   t  |  j d ƒ ƒ } t ƒ  } t d d d d g ƒ | d <d d | j d	 <t ƒ  & } | j | d
 d d t d t ƒWd  QXt | ƒ d k s” t	 ‚ t  | d j
 ƒ j d ƒ s¶ t	 ‚ d t  | d j
 ƒ k sÕ t	 ‚ d  S(   Ns	   test.hdf5R   i   i   i   R   t   0i   Re   R   R'   Rn   R@   i    sT   Attributes could not be written to the output HDF5 file: Unable to create attribute s!   bject header message is too largei   i  (   R   R   R   R   Re   R   R   R6   t   lenR   t   messageR>   (   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_metadata_too_large“  s    	%c         C  s  t  |  j d ƒ ƒ } t ƒ  } | j t d d d d d d g ƒ ƒ d | j d <d | j d	 <d
 | j d <t | j d <t j d d d g ƒ | j d <t  | j d <t	 ƒ   } | j
 | d d ƒWd  QXt | ƒ d k sà t ‚ t  | d j ƒ j d j t | j d ƒ ƒ ƒ st ‚ d  S(   Ns	   test.hdf5R   R   R   i   i   i   R`   Ra   gn†ðù!	@Rb   Rc   Rd   R1   R   R'   i    sD   Attribute `f` of type {0} cannot be written to HDF5 files - skipping(   R   R   R   R   R   Re   R6   R   R[   R   R   Rr   R   Rs   R>   R    t   type(   R   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_skip_meta¤  s    	%c   	      C  sS  t  |  j d ƒ ƒ } d d  l } | j | d ƒ H } t ƒ  } | j t d d d d d d	 g ƒ ƒ | j | d
 d ƒWd  QX| j | ƒ } t j | d
 d ƒ} t	 j
 | d d d d	 g k ƒ sÉ t ‚ t j | d d
 d ƒ} t	 j
 | d d d d	 g k ƒ s
t ‚ t j | d ƒ } t	 j
 | d d d d	 g k ƒ sEt ‚ | j ƒ  d  S(   Ns	   test.hdf5iÿÿÿÿR   R   R   R   i   i   i   R   R'   R   (   R   R   R"   R#   R   R   R   R   R%   R   R(   R   R$   (	   R   R   R"   R<   R   R1   R)   RD   t   t4(    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   test_read_h5py_objectsº  s    	%((((?   t
   __future__R    R   t   numpyR   t   tests.helperR   t   tableR   R   R"   t   ImportErrorR;   t   HAS_H5PYR6   t   yamlt   HAS_YAMLt   uint8t   uint16t   uint32t   uint64t   int8t   int16t   int32t   int64t   float32t   float64R   R^   R
   t   markt   skipifR   R&   R*   R+   R-   R.   R2   R3   R4   R7   R=   R?   RA   RE   RG   RK   RN   RO   RP   RW   RX   RY   RZ   t   parametrizeR]   R_   Rg   Rp   Rt   Rv   Rx   (    (    (    s>   lib/python2.7/site-packages/astropy/io/misc/tests/test_hdf5.pyt   <module>   sb   

		
	

	
	

!