ó
šßÈ[c           @   s  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	 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 „  Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   OrderedDictNi   (   t   catch_warnings(   t   Tablet   QTablet   TableMergeError(   t   _get_out_class(   t   units(   t   metadata(   t   MergeConflictError(   t   tablec         C   s   t  |  ƒ t  | ƒ k S(   N(   t   sorted(   t   list1t   list2(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   sort_eq   s    t   TestJoinc           B   s­   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s^  d d d d d g } d d d d	 d
 g } | j  | d d ƒ|  _ | j  | d d ƒ|  _ | |  j d t ƒ|  _ |  j j j t d d d g f d i d d 6f d g ƒ ƒ |  j j j t d d d g f d i d d 6f d g ƒ ƒ |  j j j t d d d d g f d d g ƒ ƒ t d d d d d g f d i d d 6d d 6f d d g ƒ |  _ d  S(   Ns    a   b   c s     0 foo  L1s     1 foo  L2s     1 bar  L3s     2 bar  L4s    a   b   d s     1 foo  R1s     1 foo  R2s     2 bar  R3s     4 bar  R4t   formatt   asciit   copyt   bi   i   t   ct   at   di   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (	   t   readt   t1t   t2t   Truet   t3t   metat   updateR    t
   meta_merge(   t   selft   t_clst   lines1t   lines2(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   _setup   s(    		;;1c         C   sG   |  j  | ƒ t j |  j |  j d d ƒ} | j |  j k sC t ‚ d  S(   Nt	   join_typet   inner(   R"   R	   t   joinR   R   R   R   t   AssertionError(   R   t   operation_table_typet   out(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_table_meta_merge1   s    c         C   sº  |  j  | ƒ t ƒ  % } t j |  j |  j d d ƒ} Wd  QXt | ƒ d k sU t ‚ | j |  j j k sp t ‚ t ƒ  + } t j |  j |  j d d d d ƒ} Wd  QXt | ƒ d k s¾ t ‚ | j |  j j k sÙ t ‚ t ƒ  + } t j |  j |  j d d d d ƒ} Wd  QXt | ƒ d k s't ‚ | j |  j j k sBt ‚ t	 j
 t ƒ ) t j |  j |  j d d d d ƒ} Wd  QXt	 j
 t ƒ ) t j |  j |  j d d d d	 ƒ} Wd  QXd  S(
   NR#   R$   i   t   metadata_conflictst   warnt   silenti    t   errort   nonsense(   R"   R   R	   R%   R   R   t   lenR&   R   t   pytestt   raisesR   t
   ValueError(   R   R'   t   wR(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_table_meta_merge_conflict6   s"    $***c         C   s<  |  j  | ƒ |  j } |  j } t j | | ƒ } t | ƒ | k sI t ‚ t | d ƒ t | d ƒ k so t ‚ t | d ƒ t | d ƒ k s• t ‚ t | d ƒ t | d ƒ k s» t ‚ t | d ƒ t | d ƒ k sá t ‚ | j t k sö t ‚ t	 | j
 ƒ  d d d d d	 g ƒ s t ‚ | j |  j k s8t ‚ d  S(
   NR   R   R   R   s    a   b   c   d s   --- --- --- ---s     1 foo  L2  R1s     1 foo  L2  R2s     2 bar  L4  R3(   R"   R   R   R	   R%   t   typeR&   t   maskedt   FalseR   t   pformatR   R   (   R   R'   R   R   t   t12(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_both_unmasked_innerQ   s     		&&&&c      
   C   s¹  | t  k r t j d ƒ n  |  j | ƒ |  j } |  j } t j | | d d ƒ} | j t	 k sh t
 ‚ t | j ƒ  d d d d d d	 d
 g ƒ s˜ t
 ‚ t j | | d d ƒ} | j t	 k sÅ t
 ‚ t | j ƒ  d d d d	 d
 d g ƒ sò t
 ‚ t j | | d d ƒ} | j t	 k st
 ‚ t | j ƒ  d d d d d d	 d
 d g ƒ sRt
 ‚ t j | | d d ƒ} t j | | d d d d d g ƒ} t j | j ƒ  | j ƒ  k ƒ sµt
 ‚ d  S(   Ns(   Quantity columns do not support masking.R#   t   lefts    a   b   c   d s   --- --- --- ---s     0 foo  L1  --s     1 bar  L3  --s     1 foo  L2  R1s     1 foo  L2  R2s     2 bar  L4  R3t   rights     4 bar  --  R4t   outert   keysR   R   (   R   R0   t   xfailR"   R   R   R	   R%   R6   R   R&   R   R8   t   npt   allt   as_array(   R   R'   R   R   R9   t   t12at   t12b(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt#   test_both_unmasked_left_right_outerf   sF    		$c      	   C   sV  |  j  | ƒ |  j } |  j } t j | | d d ƒ} t | ƒ | k sO t ‚ t | d ƒ t | d ƒ k su t ‚ t | d ƒ t | d ƒ k s› t ‚ t | d ƒ t | d ƒ k sÁ t ‚ t | d ƒ t | d ƒ k sç t ‚ t | d ƒ t | d ƒ k st ‚ | j t k s"t ‚ t	 | j
 ƒ  d d	 d
 d d d d g ƒ sRt ‚ d  S(   NR>   R   t   b_1R   R   t   b_2R   s    a  b_1  c  b_2  d s   --- --- --- --- ---s     1 foo  L2 foo  R1s     1 foo  L2 foo  R2s     1 bar  L3 foo  R1s     1 bar  L3 foo  R2s     2 bar  L4 bar  R3(   R"   R   R   R	   R%   R5   R&   R6   R7   R   R8   (   R   R'   R   R   R9   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt#   test_both_unmasked_single_key_inner“   s$    		&&&&&c         C   st  | t  k r t j d ƒ n  |  j | ƒ |  j } |  j } t j | | d d d d ƒ} | j t	 k sn t
 ‚ t | j ƒ  d d d d	 d
 d d d g ƒ s¡ t
 ‚ t j | | d d d d ƒ} | j t	 k sÔ t
 ‚ t | j ƒ  d d d	 d
 d d d d g ƒ st
 ‚ t j | | d d d d ƒ} | j t	 k s:t
 ‚ t | j ƒ  d d d d	 d
 d d d d g	 ƒ spt
 ‚ d  S(   Ns(   Quantity columns do not support masking.R#   R;   R>   R   s    a  b_1  c  b_2  d s   --- --- --- --- ---s     0 foo  L1  --  --s     1 foo  L2 foo  R1s     1 foo  L2 foo  R2s     1 bar  L3 foo  R1s     1 bar  L3 foo  R2s     2 bar  L4 bar  R3R<   s     4  --  -- bar  R4R=   (   R   R0   R?   R"   R   R   R	   R%   R6   R   R&   R   R8   (   R   R'   R   R   R9   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt.   test_both_unmasked_single_key_left_right_outer©   sH    		c      	   C   s{  | t  k r t j d ƒ n  |  j | ƒ |  j } | |  j d t ƒ} |  j } t j | | d d ƒ} | j	 t k s} t
 ‚ t j | | ƒ } t j | j ƒ  t j | ƒ k ƒ s¹ t
 ‚ t | d j d <t | d j d <t j | | d d d	 d
 ƒ} t | j ƒ  d d d d d d d g ƒ s)t
 ‚ t j | | d d d	 d
 ƒ} t | j ƒ  d d d d d d d g ƒ swt
 ‚ d  S(   Ns(   Quantity columns do not support masking.R6   R#   R$   R   i   R   i   R>   R   s    a  b_1  c  b_2  d s   --- --- --- --- ---s     1  --  L2 foo  R1s     1  --  L2 foo  R2s     1 bar  -- foo  R1s     1 bar  -- foo  R2s     2 bar  L4 bar  R3s    a  b_1  d  b_2  c s     1 foo  R2  --  L2s     1 foo  R2 bar  --s     1 foo  R1  --  L2s     1 foo  R1 bar  --s     2 bar  R3 bar  L4(   R   R0   R?   R"   R   R   R   R	   R%   R6   R&   R@   RA   RB   t   arrayt   maskR   R8   (   R   R'   R   t   t1mR   t   t1m2R9   t   t21m(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_masked_unmaskedÕ   s8    		*c      	   C   sS  |  j  | ƒ | t k r) t j d ƒ n  |  j } | |  j d t ƒ} |  j } | |  j d t ƒ} t j | | d d ƒ} | j	 t k s’ t
 ‚ t j | | ƒ } t j | j ƒ  t j | ƒ k ƒ sÎ t
 ‚ t | d j d <t | d j d <t | d	 j d <t j | | d d d
 d ƒ} t | j ƒ  d d d d d d d g ƒ sOt
 ‚ d  S(   Ns(   Quantity columns do not support masking.R6   R#   R$   R   i   R   i   R   R>   R   s    a  b_1  c  b_2  d s   --- --- --- --- ---s     1  --  L2 foo  R1s     1  --  L2 foo  R2s     1 bar  -- foo  R1s     1 bar  -- foo  R2s     2 bar  L4 bar  --(   R"   R   R0   R?   R   R   R   R	   R%   R6   R&   R@   RA   RB   RJ   RK   R   R8   (   R   R'   R   RL   R   t   t2mt   t1m2mR9   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_masked_maskedú   s,    		*c      	   C   sq   |  j  | ƒ |  j } |  j } t j | | d d d d d g d d ƒ} | j d d d	 d
 d g k sm t ‚ d  S(   Nt   uniq_col_names   x_{table_name}_{col_name}_yt   table_namest   Lt   RR>   R   t   x_L_b_yR   t   x_R_b_yR   (   R"   R   R   R	   R%   t   colnamesR&   (   R   R'   R   R   R9   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_col_rename  s    		c      	   C   sY   |  j  | ƒ |  j } |  j } d | d <t j t ƒ  t j | | d d ƒWd  QXd  S(   Ni   RF   R>   R   (   R"   R   R   R0   R1   R   R	   R%   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_rename_conflict%  s    		
c      
   C   sU   |  j  | ƒ |  j } |  j } t j t ƒ ! t j | | d d d g ƒWd  QXd  S(   NR>   R   s	   not there(   R"   R   R   R0   R1   R   R	   R%   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_missing_keys1  s
    		c      	   C   sO   |  j  | ƒ |  j } |  j } t j t ƒ  t j | | d d ƒWd  QXd  S(   NR#   s   illegal value(   R"   R   R   R0   R1   R2   R	   R%   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_bad_join_type9  s
    		c         C   se   |  j  | ƒ |  j } |  j } | d =| d =| d =| d =t j t ƒ  t j | | ƒ Wd  QXd  S(   NR   R   (   R"   R   R   R0   R1   R   R	   R%   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_no_common_keysA  s    		c         C   s’   |  j  | ƒ | t k r) t j d ƒ n  |  j } | |  j d t ƒ} t j | | ƒ t | d j	 d <t j
 t ƒ  t j | | ƒ Wd  QXd  S(   Ns(   Quantity columns do not support masking.R6   R   i    (   R"   R   R0   R?   R   R   R   R	   R%   RK   R1   R   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_masked_key_columnM  s    	c      
   C   sÍ  |  j  | ƒ |  j } |  j } | j d d ƒ t d d d g f d i d d 6f d g ƒ } t d d d g f d i d d 6f d g ƒ } d	 | d _ d
 | d _ d | d j _ d | d j _ | | d j _	 | | d j _	 | | d j _	 d | d j _ d | d j _ d | d j _ d | d j _ t
 t j ƒ % } t j | | d d d g ƒ} Wd  QX| t k rµ| d j t j k s“t ‚ d t | d j ƒ k sÍt ‚ n t | ƒ d k sÍt ‚ | d j d
 k sæt ‚ | d j j d k st ‚ | d j j d k st ‚ | d j j	 |  j k s=t ‚ | d j j	 | k sYt ‚ | d j j d k sut ‚ | d j j d k s‘t ‚ | d j j d k s­t ‚ | d j j d k sÉt ‚ d  S(   NR   R   R   i   i   R   i   i   t   cmt   mt   t1_bs   %6ss   %3st   t1_ct   t2_cR>   i    sB   In merged column 'a' the 'unit' attribute does not match (cm != m)t   c_1t   c_2(   R   i   (   R   i   (   R"   R   R   t   rename_columnR    t   unitt   infot   descriptionR   R   R   R   t   MergeConflictWarningR	   R%   R   t   categoryR&   t   strt   messageR/   R   (   R   R'   R   R   t   meta1t   meta2t   warning_linesR9   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_col_meta_mergeY  sB    		..$c         C   sÒ   |  j  | ƒ | ƒ  } d d d g | d <t j d
 ƒ | d <| ƒ  } d d d g | d <d d d g | d	 <t j | | ƒ } t j j | d | d ƒ t j j | d | d ƒ t j j | d	 | d	 ƒ d  S(   Ni   i   i   R   i   R   i   i   R   (   i   i   (   R"   R@   t   onesR	   R%   t   testingt   assert_allclose(   R   R'   R   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_join_multidimensional‰  s    		c   	   	   C   s2  |  j  | ƒ | t k r) t j d ƒ n  t j d d d g d d ƒ} t j d d d g d d ƒ} t j d d g d d g d d	 g g d d
 d d d g d d g d d g g ƒ} t j d d g d d g d d g g d d ƒ} | | | g ƒ } | | | g ƒ } t j | | d d ƒ} t j	 | d
 j
 t t g t t g g k ƒ sVt ‚ t j	 | d j
 t t g t t g g k ƒ sŠt ‚ t j | | d d ƒ} t j	 | d
 j
 t t g t t g t t g t t g g k ƒ sèt ‚ t j	 | d j
 t t g t t g t t g t t g g k ƒ s.t ‚ d  S(   Ns(   Quantity columns do not support masking.i   i   i   t   nameR   i   i   i   R   RK   i    R   R#   R$   R=   (   R"   R   R0   R?   R	   t   MaskedColumnt   ColumnR%   R@   RA   RK   R   R7   R&   (	   R   R'   R   t   a2R   R   R   R   R9   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt!   test_join_multidimensional_masked  s@    									(   t   __name__t
   __module__R   R"   R)   R4   R:   RE   RH   RI   RO   RR   RZ   R[   R\   R]   R^   R_   Rr   Rv   R{   (    (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR      s$   				-		,	%								0	t
   TestVStackc           B   s€   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C   sÊ  | j  d d d g d d ƒ|  _ | j  d d d g d d ƒ|  _ | j  d	 d
 d d g d d ƒ|  _ | |  j d t d | t k ƒ|  _ | |  j d t ƒ|  _ |  j j j	 t
 d d d g f d i d d 6f d g ƒ ƒ |  j j j	 t
 d d d g f d i d d 6f d g ƒ ƒ |  j j j	 t
 d d d g f d i d d 6f d g ƒ ƒ |  j j j	 t
 d d d  g ƒ ƒ t
 d d d d d d d g f d i d d 6d d 6d d 6f d! d" d# g ƒ |  _ d  S($   Ns    a   bs    0. foos    1. barR   R   s    a    b   cs    2.  pez  4s    3.  sez  5s    a    bs    4.   7s    5.   8s    6.   9R   R6   R   i   i   R   R   R   i   i   i   i   t   et   k(   R   i   (   R   i   (   R   i   (   R   i   (   R   R€   (   R   i   (   R   i   (   R   i   (   R   i   (   R   R   R   R   R   R   t   t4t   t5R   R   R    R   (   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR"   É  s*    			$;;;"c         C   sÂ   |  j  | ƒ |  j j ƒ  } | j j ƒ  t j |  j | d g ƒ } t | d ƒ t |  j d ƒ k sn t ‚ t | d ƒ t |  j d ƒ k s— t ‚ | j	 ƒ  d d d d d g k s¾ t ‚ d  S(   Ni   R   R   s    a   b s   --- ---s   0.0 foos   1.0 bar(
   R"   R   R   R   t   clearR	   t   vstackR5   R&   R8   (   R   R'   R   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_stack_rowså  s    ))c         C   sP   |  j  | ƒ t j |  j |  j |  j g d d ƒ} | j |  j k sL t ‚ d  S(   NR#   R$   (	   R"   R	   R„   R   R   R   R   R   R&   (   R   R'   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR)   ò  s    'c         C   sÉ  |  j  | ƒ t ƒ  ( } t j |  j |  j g d d ƒ} Wd  QXt | ƒ d k sX t ‚ | j |  j j k ss t ‚ t ƒ  . } t j |  j |  j g d d d d ƒ} Wd  QXt | ƒ d k sÄ t ‚ | j |  j j k sß t ‚ t ƒ  . } t j |  j |  j g d d d d ƒ} Wd  QXt | ƒ d k s0t ‚ | j |  j j k sKt ‚ t	 j
 t ƒ , t j |  j |  j g d d d d ƒ} Wd  QXt	 j
 t ƒ , t j |  j |  j g d d d d	 ƒ} Wd  QXd  S(
   NR#   R$   i   R*   R+   R,   i    R-   R.   (   R"   R   R	   R„   R   R‚   R/   R&   R   R0   R1   R   R2   (   R   R'   R3   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR4   ÷  s"    '---c         C   s¸   |  j  | ƒ t j t ƒ  t j g  ƒ Wd  QXt j t ƒ  t j d ƒ Wd  QXt j t ƒ  t j |  j d g ƒ Wd  QXt j t ƒ $ t j |  j |  j g d d ƒWd  QXd  S(   Ni   R#   s   invalid join type(	   R"   R0   R1   t	   TypeErrorR	   R„   R   R2   R   (   R   R'   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_bad_input_type  s    c      	   C   sœ  |  j  | ƒ |  j } |  j } |  j } t j | | g d d ƒ} | j t k sX t ‚ t	 | ƒ | k sp t ‚ t	 | d ƒ t	 | d ƒ k s– t ‚ t	 | d ƒ t	 | d ƒ k s¼ t ‚ | j
 ƒ  d d d d d	 d
 g k sæ t ‚ t j | | | g d d ƒ} t	 | ƒ | k st ‚ t	 | d ƒ t	 | d ƒ k sBt ‚ t	 | d ƒ t	 | d ƒ k sht ‚ | j
 ƒ  d d d d d	 d
 d d g k s˜t ‚ d  S(   NR#   R$   R   R   s    a   b s   --- ---s   0.0 foos   1.0 bars   2.0 pezs   3.0 sez(   R"   R   R   R   R	   R„   R6   R7   R&   R5   R8   (   R   R'   R   R   R   R9   t   t124(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_stack_basic_inner  s6    			&&&&c      	   C   sÛ   | t  k r t j d ƒ n  |  j | ƒ |  j } |  j } |  j } t j | | g d d ƒ} | j	 ƒ  d d d d d d	 g k s‰ t
 ‚ t j | | | g d d ƒ} | j	 ƒ  d d d d d d	 d d g k s× t
 ‚ d  S(
   Ns(   Quantity columns do not support masking.R#   R=   s    a   b   c s   --- --- ---s   0.0 foo  --s   1.0 bar  --s   2.0 pez   4s   3.0 sez   5(   R   R0   R?   R"   R   R   R   R	   R„   R8   R&   (   R   R'   R   R   R   R9   Rˆ   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_stack_basic_outer<  s,    			c      
   C   su  |  j  | ƒ t j t ƒ & } t j |  j |  j g d d ƒWd  QXd j |  j d j	 j
 |  j d j	 j
 g ƒ t | ƒ k s… t ‚ t j t ƒ & } t j |  j |  j g d d ƒWd  QXd t | ƒ k sÔ t ‚ t j t ƒ $ t j |  j |  j g d d ƒWd  QX|  j j ƒ  } d d	 g | d _ t j t ƒ  } t j |  j | g ƒ Wd  QXd
 t | ƒ k sqt ‚ d  S(   NR#   R$   s,   The 'b' columns have incompatible types: {0}R   R=   s(   The 'b' columns have incompatible types:t   exacti   i   s   have different shape(   R"   R0   R1   R   R	   R„   R   R   R   t   dtypeRw   Rm   R&   R   R   t   shape(   R   R'   t   excinfot
   t1_reshape(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_stack_incompatibleU  s     %&%%c         C   s‰   | t  k r t j d ƒ n  |  j | ƒ |  j } |  j } t | d j d <t j	 | | g ƒ j
 ƒ  d d d d d d g k s… t ‚ d  S(	   Ns(   Quantity columns do not support masking.R   i   s    a   b s   --- ---s   0.0 foos   1.0 bars   1.0  --(   R   R0   R?   R"   R   R   R   RK   R	   R„   R8   R&   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_vstack_one_maskedj  s    		c         C   s´  |  j  | ƒ |  j } |  j } |  j } d | d j _ d | d j _ d | d j _ d | d j _ d | d j _ d | d j _ d | d j _ d | d j _ | d j j j	 t
 d d	 d
 g f d i d	 d 6f d! g ƒ ƒ | d j j j	 t
 d d d g f d i d	 d 6f d" g ƒ ƒ | d j j j	 t
 d d d g f d i d	 d 6f d# g ƒ ƒ | d j j j	 t
 d d d g f d i d	 d 6f d$ g ƒ ƒ t t j ƒ % } t j | | | g d d ƒ} Wd  QX| t k r’| d j t j k st ‚ d t | d j ƒ k s!t ‚ | d	 j t j k s=t ‚ d t | d	 j ƒ k s\t ‚ | j ƒ  d d d d d d d d d g	 k sÝt ‚ nK t | ƒ d k sªt ‚ | j ƒ  d d d d d d d  d d g	 k sÝt ‚ | d j j d k sùt ‚ | d j j d k st ‚ | d j j d k s1t ‚ | d j j d k sMt ‚ | d j j |  j k slt ‚ | d j j t
 d d d g f d i d	 d 6f d% g ƒ k s°t ‚ d  S(&   NR`   R   Ra   t   kms   %fRb   R   s   %6si   i   R   R   i   i   i   i   R   R#   R$   i    sB   In merged column 'a' the 'unit' attribute does not match (cm != m)sB   In merged column 'a' the 'unit' attribute does not match (m != km)s      a       b   s      km          s   -------- ------s   0.000000    foos   1.000000    bars   2.000000    pezs   3.000000    sezs   0.000010    bars   0.002000    pezs   0.003000    sez(   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R"   R   R   R   Ri   Rh   R   Rj   R   R   R    R   R   Rk   R	   R„   R   Rl   R&   Rm   Rn   R8   R/   R   (   R   R'   R   R   R   Rq   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_col_meta_merge_innerx  sd    			????$c         C   s¸  | t  k r t j d ƒ n  |  j | ƒ |  j } |  j } |  j } d | d _ d | d _ d | d _ d | d j _	 d | d j _	 d | d j _	 d | d j _
 d	 | d j _	 | d j j j t d d
 d g f d i d
 d 6f d g ƒ ƒ | d j j j t d d d g f d i d
 d 6f d g ƒ ƒ | d j j j t d d d g f d i d
 d 6f d g ƒ ƒ | d j j j t d d d g f d i d
 d 6f d g ƒ ƒ d | d _ d	 | d j _	 d | d j _
 t t j ƒ % } t j | | | g d d ƒ} Wd  QX| d j t j k s6t ‚ d t | d j ƒ k sUt ‚ | d
 j t j k sqt ‚ d t | d
 j ƒ k st ‚ | d j d k s©t ‚ | d j j	 d k sÅt ‚ | d j j
 d k sát ‚ | d j j	 d	 k sýt ‚ | d j j |  j k st ‚ | d j j t d d d g f d i d
 d 6f d g ƒ k s`t ‚ | d j j d k s|t ‚ | d j j	 d	 k s˜t ‚ | d j j
 d k s´t ‚ d  S(   Ns(   Quantity columns do not support masking.R`   R   Ra   R’   s   %0dRb   R   s   %6si   i   R   R   i   i   i   i   R   Rd   R#   R=   i    sB   In merged column 'a' the 'unit' attribute does not match (cm != m)sB   In merged column 'a' the 'unit' attribute does not match (m != km)(   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   R0   R?   R"   R   R   R   Rh   Ri   R   Rj   R   R   R    R   R   Rk   R	   R„   Rl   R&   Rm   Rn   R   (   R   R'   R   R   R   Rq   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_col_meta_merge_outer½  sL    			????$Dc         C   sb   |  j  | ƒ |  j t j |  j ƒ k j ƒ  s4 t ‚ |  j t j |  j g ƒ k j ƒ  s^ t ‚ d  S(   N(   R"   R   R	   R„   RA   R&   (   R   R'   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_vstack_one_tableõ  s    'c         C   s²   | d } t  j | g ƒ } t | ƒ j } d d d d d g } | | k rb t  j | | g ƒ nL t j t ƒ  } t  j | | g ƒ Wd  QXd j | ƒ t	 | ƒ k s® t
 ‚ d  S(   NRa   t   Quantityt   Anglet   Latitudet	   Longitudet   EarthLocations/   vstack unavailable for mixin column type(s): {}(   R	   R   R5   R|   R„   R0   R1   t   NotImplementedErrorR   Rm   R&   (   R   t
   mixin_colst   colt   tt   cls_namet   implemented_mixin_classest   err(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt"   test_check_for_mixin_functionalityû  s    
	(   R|   R}   R   R"   R…   R)   R4   R‡   R‰   RŠ   R   R‘   R“   R”   R•   R¢   (    (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR~   Ç  s   									E	8	t
   TestHStackc           B   sw   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z RS(   c         C   sä  | j  d d d g d d ƒ|  _ | j  d d d g d d ƒ|  _ | j  d	 d
 d d g d d ƒ|  _ | |  j d t d t ƒ|  _ d |  j d _ d |  j d _ | |  j d t ƒ|  _ |  j j j	 t
 d d d g f d i d d 6f d g ƒ ƒ |  j j j	 t
 d d d g f d i d d 6f d g ƒ ƒ |  j j j	 t
 d d d g f d i d d 6f d g ƒ ƒ |  j j j	 t
 d  d! d" g ƒ ƒ t
 d d d d d d d g f d i d d 6d d 6d d 6f d# d$ d% g ƒ |  _ d  S(&   Ns    a    bs    0. foos    1. barR   R   s    a    b   cs    2.  pez  4s    3.  sez  5s    d    es    4.   7s    5.   8s    6.   9R   R6   t   fR   t   gR   i   i   R   R   i   i   i   i   R   R€   (   R   i   (   R   i   (   R   i   (   R   i   (   R   R€   (   R   i   (   R   i   (   R   i   (   R   i   (   R   R   R   R   R   R   Rw   R‚   R   R   R    R   (   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR"     s.    			;;;"c         C   sP   |  j  | ƒ t j |  j |  j g ƒ } | j ƒ  d d d d g k sL t ‚ d S(   sp   
        From #2995, test that hstack'ing references to the same table has the
        expected output.
        s   a_1 b_1 a_2 b_2s   --- --- --- ---s   0.0 foo 0.0 foos   1.0 bar 1.0 barN(   R"   R	   t   hstackR   R8   R&   (   R   R'   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_stack_same_table-  s    c         C   sU   |  j  | ƒ t j |  j d |  j d g ƒ } | j ƒ  d d d g k sQ t ‚ d  S(   Ni    i   s   a_1 b_1 a_2 b_2  c s   --- --- --- --- ---s   0.0 foo 3.0 sez   5(   R"   R	   R¦   R   R   R8   R&   (   R   R'   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR…   9  s
    #c         C   sP   |  j  | ƒ t j |  j |  j |  j g d d ƒ} | j |  j k sL t ‚ d  S(   NR#   R$   (	   R"   R	   R¦   R   R   R   R   R   R&   (   R   R'   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR)   @  s    'c         C   sÉ  |  j  | ƒ t ƒ  ( } t j |  j |  j g d d ƒ} Wd  QXt | ƒ d k sX t ‚ | j |  j j k ss t ‚ t ƒ  . } t j |  j |  j g d d d d ƒ} Wd  QXt | ƒ d k sÄ t ‚ | j |  j j k sß t ‚ t ƒ  . } t j |  j |  j g d d d d ƒ} Wd  QXt | ƒ d k s0t ‚ | j |  j j k sKt ‚ t	 j
 t ƒ , t j |  j |  j g d d d d ƒ} Wd  QXt	 j
 t ƒ , t j |  j |  j g d d d d	 ƒ} Wd  QXd  S(
   NR#   R$   i   R*   R+   R,   i    R-   R.   (   R"   R   R	   R¦   R   R‚   R/   R&   R   R0   R1   R   R2   (   R   R'   R3   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR4   E  s"    '---c         C   s¸   |  j  | ƒ t j t ƒ  t j g  ƒ Wd  QXt j t ƒ  t j d ƒ Wd  QXt j t ƒ  t j |  j d g ƒ Wd  QXt j t ƒ $ t j |  j |  j g d d ƒWd  QXd  S(   Ni   R#   s   invalid join type(	   R"   R0   R1   R†   R	   R¦   R   R2   R   (   R   R'   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR‡   `  s    c         C   s8  |  j  | ƒ |  j } |  j } |  j } |  j } t j | | g d d ƒ} | j t k sa t	 ‚ t
 | ƒ | k sy t	 ‚ t
 | d ƒ t
 | d ƒ k sŸ t	 ‚ t
 | d ƒ t
 | d ƒ k sÅ t	 ‚ t
 | d ƒ t
 | d ƒ k së t	 ‚ t
 | d ƒ t
 | d ƒ k st	 ‚ | j ƒ  d	 d
 d d g k s5t	 ‚ t j | | g d d ƒ} | j ƒ  | j ƒ  k snt	 ‚ t j | | g d d ƒ} | j ƒ  | j ƒ  k s§t	 ‚ t j | | | | g d d ƒ} | j ƒ  d d d d d g k sït	 ‚ t j | | | | g d d ƒ} | j ƒ  d d d d g k s4t	 ‚ d  S(   NR#   R$   t   a_1R   RF   R   t   a_2RG   s   a_1 b_1 a_2 b_2  c s   --- --- --- --- ---s   0.0 foo 2.0 pez   4s   1.0 bar 3.0 sez   5R=   s#   a_1 b_1 a_2 b_2  c   d   e   f   g s#   --- --- --- --- --- --- --- --- ---s#   0.0 foo 2.0 pez   4 4.0   7 0.0 foos#   1.0 bar 3.0 sez   5 5.0   8 1.0 bars#    --  --  --  --  -- 6.0   9  --  --(   R"   R   R   R   R   R	   R¦   R6   R7   R&   R5   R8   (   R   R'   R   R   R   R   R(   t   out_list(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_stack_basick  s>    				&&&&!!c         C   sF   |  j  | ƒ t j t ƒ $ t j |  j |  j g d d ƒWd  QXd  S(   NR#   R‹   (   R"   R0   R1   R   R	   R¦   R   R   (   R   R'   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR   ’  s    c         C   sœ   | t  k r t j ƒ  n  |  j | ƒ |  j } | | d t d t ƒ} | j j ƒ  t | d j d <t	 j
 | | g ƒ j ƒ  d d d d g k s˜ t ‚ d  S(	   NR   R6   R   i   s   a_1 b_1 a_2 b_2s   --- --- --- ---s   0.0 foo 0.0 foos   1.0 bar 1.0  --(   R   R0   R?   R"   R   R   R   Rƒ   RK   R	   R¦   R8   R&   (   R   R'   R   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_hstack_one_masked™  s    	c      	   C   sw   |  j  | ƒ t j |  j |  j g d d d d d d ƒ} | j t k sO t ‚ | j ƒ  d d	 d
 d g k ss t ‚ d  S(   NR#   R$   RS   s   {table_name}_{col_name}RT   R;   R<   s!   left_a left_b right_a right_b  c s!   ------ ------ ------- ------- ---s!      0.0    foo     2.0     pez   4s!      1.0    bar     3.0     sez   5(   R;   R<   (	   R"   R	   R¦   R   R   R6   R7   R&   R8   (   R   R'   R(   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_table_col_rename¦  s    	c         C   s…  |  j  | ƒ |  j } |  j d  } |  j } t d d d g f d i d d 6f d g ƒ } d | d _ d | d j _ d	 | d
 j _ | d j j	 j
 | ƒ | d j j	 j
 t d d d g f d i d d 6f d g ƒ ƒ | d j j	 j
 t d d d g f d i d d 6f d g ƒ ƒ | d j j	 j
 t d d d g f d i d d 6f d g ƒ ƒ d | d _ d	 | d j _ d | d j _ t t j ƒ % } t j | | | g d d ƒ} Wd  QXt | ƒ d k sÖt ‚ xn | | | g D]] } xT | j D]I }	 x@ d D]8 }
 t | |	 j |
 ƒ t | |	 j |
 ƒ k st ‚ qWqöWqæWd  | d j j	 d <| d j j	 d d d g k st ‚ d  S(   Ni   R   i   R   R   R   R`   Rb   s   %6sR¤   i   i   R¥   i   i   R   Ra   t   t3_cR#   R‹   i    R   Rh   R   Rj   (   R   i   (   R   i   (   R   i   (   R   i   (   R   Rh   R   Rj   (   R"   R   R   R   R    Rh   Ri   Rj   R   R   R   R   R   Rk   R	   R¦   R/   R&   RY   t   getattrt   None(   R   R'   R   R   R   Ro   Rq   R(   Rž   Rw   t   attr(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyRr   ±  s0    		.???$>c         C   sb   |  j  | ƒ |  j t j |  j ƒ k j ƒ  s4 t ‚ |  j t j |  j g ƒ k j ƒ  s^ t ‚ d  S(   N(   R"   R   R	   R¦   RA   R&   (   R   R'   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_hstack_one_tableÒ  s    '(   R|   R}   R   R"   R§   R…   R)   R4   R‡   R«   R   R¬   R­   Rr   R²   (    (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyR£     s   						'				!c         C   sQ  |  j  d d d d d d d d d	 d g
 d
 d ƒ} |  t j | d  ƒ ƒ } t j | ƒ } t | j ƒ  | j ƒ  ƒ s| t ‚ | j ƒ  } | d- =t j | ƒ } t | j ƒ  d d d d d g ƒ sÈ t ‚ d } t j | | ƒ } t | j ƒ  d d d d d g ƒ s
t ‚ t j | | d d ƒ} t | j ƒ  d d d d d g ƒ sLt ‚ t j | | d d ƒ} t | j ƒ  d d d g ƒ sˆt ‚ d d g }	 t j | |	 ƒ }
 t |
 j ƒ  d d d d d d  d g ƒ sÖt ‚ t j | |	 d d ƒ} t | j ƒ  d d d d! d d  d g ƒ st ‚ t j | |	 d d ƒ} t | j ƒ  d d d d  g ƒ s]t ‚ d d g }	 t	 j
 t ƒ  } t j | |	 ƒ }
 Wd  QX| j j d" d# k s¯t ‚ t	 j
 t ƒ  } t j | |	 d t ƒWd  QX| j j d" d$ k sùt ‚ |  | d% t ƒ} t | d j d& <t	 j
 t ƒ  } t j | ƒ } Wd  QX| j j d" d' k s_t ‚ t j | d( t ƒ} | j ƒ  d d d d d) g k s›t ‚ t	 j
 t ƒ " } t j | d( t d* d ƒ} Wd  QX|  | d% t ƒ} t | d j d& <t | d j d+ <t j | d* d d d g d( t ƒ} | j ƒ  d d d, d d) g k sMt ‚ d  S(.   Ns
    a b  c  ds
    2 b 7.0 0s
    1 c 3.0 5s
    2 b 6.0 2s
    2 a 4.0 3s
    1 a 1.0 7s
    2 b 5.0 1s
    0 a 0.0 4s
    1 a 2.0 6R   R   iÿÿÿÿR   R   R   s    a s   ---s     0s     1s     2R   s    a   b   c   d s   --- --- --- ---s     0   a 0.0   4s     1   c 3.0   5s     2   b 7.0   0t   keept   lasts     2   b 5.0   1t   nones     1   a 1.0   7s     2   a 4.0   3s     1   a 2.0   6i    s   duplicate key namess/   'keep' should be one of 'first', 'last', 'none'R6   i   s]   cannot use columns with masked values as keys; remove column 'a' from keys and rerun unique()R,   s    --   c 3.0   5R>   i   s     2   a 4.0  --(   R   R   R   (   R   R@   t   sortR	   t   uniqueR   R8   R&   R   R0   R1   R2   t   valuet   argsR   RK   (   R'   Rž   t   tut   t_allt   t_st   key1t   t1at   t1bt   t1ct   key2t   t2at   t2bt   t2ct   exct   t1_mt   t1_muR   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_uniqueÙ  sº    		!!$c         C   s~   |  d g g d d g ƒ} | d j  d k s4 t ‚ t j | | g ƒ } t | ƒ d k sa t ‚ | d j  d k sz t ‚ d S(   s   
    Test for issue #5617 when vstack'ing bytes columns in Py3.
    This is really an upsteam numpy issue numpy/numpy/#8403.
    R   t   namesi   i   N(   t   itemsizeR&   R	   R„   R/   (   R'   Rž   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_vstack_bytesI  s
    c          C   s   t  j d g g d d g ƒ}  |  d j d k s7 t ‚ t  j |  |  g ƒ } t | ƒ d k sd t ‚ | d j d k s} t ‚ d S(   s   
    Test for problem related to issue #5617 when vstack'ing *unicode*
    columns.  In this case the character size gets multiplied by 4.
    u   aRÉ   R   i   i   N(   R	   R   RÊ   R&   R„   R/   (   Rž   R   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_vstack_unicodeV  s
    c          C   s  t  j d d g ƒ }  t  j d d g ƒ } d d g t j } t |  | g ƒ | j k s^ t ‚ t | |  g ƒ | j k s t ‚ t |  |  g ƒ |  j k s  t ‚ t |  g ƒ |  j k s¾ t ‚ t j	 t
 ƒ  t |  | g ƒ Wd  QXt j	 t
 ƒ  t | |  g ƒ Wd  QXd  S(   Ni   i   (   R	   Ry   Rx   t   uRa   R   t	   __class__R&   R0   R1   R2   (   R   t   mct   q(    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_get_out_classc  s    !!!c          C   sM  d d d d g t  j }  t j d d d d g |  g d d d g ƒ} t j d d g |  d  g d d d g ƒ} t j t ƒ   } t j | | g d	 d
 ƒWd QXd t | ƒ k sº t	 ‚ t j t ƒ   } t j
 | | g d	 d
 ƒWd QXd t | ƒ k st	 ‚ t j t ƒ  } t j | | d	 d
 ƒWd QXd t | ƒ k sIt	 ‚ d S(   sm   
    Test that outer join, hstack and vstack fail for a mixin column which
    does not support masking.
    i   i   i   i   RÉ   R   R   R   R#   R=   Ns   vstack requires maskings   hstack requires maskings   join requires masking(   RÍ   Ra   R	   R   R0   R1   R›   R„   Rm   R&   R¦   R%   (   R   R   R   R¡   (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   test_masking_required_exceptiont  s    -+(   t   collectionsR    R0   t   numpyR@   t   tests.helperR   R	   R   R   R   t   table.operationsR   t    R   RÍ   t   utilsR   t   utils.metadataR   R   R   R~   R£   RÈ   RË   RÌ   RÑ   RÒ   (    (    (    sB   lib/python2.7/site-packages/astropy/table/tests/test_operations.pyt   <module>   s(   	ÿ ±ÿ GÌ	p			