ó
šßÈ[c           @   s  d  d l  Z  d  d l Z d  d l Z d d l m Z m Z d d l m Z d d l m	 Z
 d d l m Z d f  d „  ƒ  YZ d	 f  d
 „  ƒ  YZ d d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z e j j d e e g ƒ d „  ƒ Z d „  Z e j j d ƒ e j j d e j e j f ƒ d „  ƒ ƒ Z  e j j d e j e j f ƒ d „  ƒ Z! d „  Z" d „  Z# e j j d e j e j f ƒ d „  ƒ Z$ e j j d e j e j g ƒ e j j d e j e j e% e& g ƒ d  „  ƒ ƒ Z' d! „  Z( d S("   iÿÿÿÿNi   (   t!   assert_follows_unicode_guidelinest   catch_warnings(   t   table(   t   units(   t   sixt
   TestColumnc           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 RS(   c         C   sb   | d d ƒ } t  | t j ƒ s' t ‚ | d } t  | | ƒ sF t ‚ t  | t j ƒ s^ t ‚ d  S(   Nt   namet   ai   (   t
   isinstancet   npt   ndarrayt   AssertionError(   t   selft   Columnt   ct   c2(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_subclass   s
    
c         C   s„  t  j d d d g ƒ } | | d d ƒ} x.t j t f t j t f t j t f t j t f t j	 t f t j
 t f f D]Þ \ } } xÏ | | | ƒ | | | ƒ f D]¯ } | r¿ t  j | ƒ n t  j | ƒ sÕ t ‚ t | ƒ d k sí t ‚ | t j k rt | ƒ t  j k s;t ‚ n! t | ƒ t  j j j k s;t ‚ | j j d k s¤ t ‚ q¤ Wqy W| d | k  } t  j | ƒ s€t ‚ d S(   s<   Show that basic numpy operations with Column behave sensiblyi   i   i   R   R   s   |b1N(   R	   t   arrayt   operatort   eqt   Truet   net   Falset   get   gtt   let   ltt   allt   anyR   t   lenR   R   t   typeR
   t   mat   coret   MaskedArrayt   dtypet   str(   R   R   t   arrR   t   opt
   test_equalR   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_numpy_ops   s"    %+! c         C   sN  t  j d d d g ƒ } | | d d ƒ} xt  j t f t  j t f t  j t f t  j t f t  j t f f D]Ù \ } } | | ƒ } t	 | ƒ t	 | ƒ k s£ t
 ‚ | r¸ t  j | ƒ n t  j | ƒ sÎ t
 ‚ | t j k rû t | ƒ t  j k sFt
 ‚ qm t | ƒ t  j j j k st
 ‚ | t  j k	 rm | j j d k sFt
 ‚ qm qm Wd S(   s<   Show that basic numpy operations with Column behave sensiblyi   i   i   R   R   s   |b1N(   R	   R   t   isfiniteR   t   isinfR   t   isnant   signt   signbitR   R   R   R   R   R   R   R
   R   R    R!   R"   R#   (   R   R   R$   R   t   ufunct	   test_truet   result(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_numpy_boolean_ufuncs3   s    +!c         C   sR   t  j d d d g d t  j ƒj | ƒ } t | ƒ d j | j ƒ k sN t ‚ d  S(   Ni   i   i   R"   s"   <{0} dtype='int64' length=3>
1
2
3(   R	   R   t   int64t   viewt   reprt   formatt   __name__R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt	   test_viewH   s    *c         C   sŠ   d d l  m } | j d d ƒ b | t j d ƒ d d d t d	 d
 ƒ} t | ƒ j ƒ  d d d d d d d d g k s€ t ‚ Wd QXd S(   s/   Show that the formatted output from str() worksi   (   t   conft	   max_linesi   iÐ  R   R   R"   R4   s   %6.2fs      a   s   -------s      0.00s      1.00s       ...s   1998.00s   1999.00s   Length = 2000 rowsN(	   t    R7   t   set_tempR	   t   aranget   floatR#   t
   splitlinesR   (   R   R   R7   t   c1(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_formatL   s    	c         C   s¯   | d d d g d d d d ƒ} t  j | ƒ } t  j | | k ƒ sK t ‚ t  j | d t ƒ} t  j | | k ƒ s{ t ‚ t  j | d d	 ƒ} t  j | | k ƒ s« t ‚ d  S(
   Ni   i   i   R   R   R"   t   i8t   copyt   i4(   R	   R   R   R   R   (   R   R   t   dt   np_data(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_convert_numpy_array[   s    !c         C   s_   | d d d g d d d d d d	 ƒ} | j  d
 ƒ t j | j d d d g k ƒ s[ t ‚ d  S(   Ni   i   i   R   R   R"   t   f8t   unitt   mt   kmgü©ñÒMbP?gü©ñÒMb`?gú~j¼t“h?(   t   convert_unit_toR	   R   t   dataR   (   R   R   RC   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_convert_unite   s    'c      	   C   sÂ  t  j d d d d d d g ƒ } t j | j ƒ  d ƒ s? t ‚ t | j ƒ  t j t f ƒ sc t ‚ t j | j	 ƒ  d ƒ s t ‚ t | j	 ƒ  t j t f ƒ s¥ t ‚ t t j
 | ƒ t  j ƒ sÆ t ‚ t  j d d d d d	 d
 g ƒ } t j | j	 ƒ  d ƒ st ‚ t | j	 ƒ  t j t f ƒ s)t ‚ t  j d d d d d	 d
 g d d d g g ƒ } | j	 ƒ  d k sqt ‚ t | j	 ƒ  t j t f ƒ s•t ‚ t j | j	 d d ƒ d d d g k ƒ sÅt ‚ | j	 d d ƒ j d k sæt ‚ t | j	 d d ƒ t j ƒ s
t ‚ t  j d d d d d d g d d d d g ƒ } t j | j ƒ  d ƒ sXt ‚ t | j ƒ  t j t f ƒ s|t ‚ t j | j	 ƒ  d ƒ sšt ‚ t | j	 ƒ  t j t f ƒ s¾t ‚ d S(   sÝ   Test that the __array_wrap__ method converts a reduction ufunc
        output that has a different shape into an ndarray view.  Without this a
        method call like c.mean() returns a Column array object with length=1.R   R   RK   g      ð?g       @g      @g      @i   i   i   i   i   i   i   t   axisi    i   i	   t   maskg      ø?N(   i   (   R   R   R	   t   allcloset   meanR   R   t   floatingR<   t   sumt   cost   integert   intR   t   shapeR
   t   MaskedColumn(   R   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_array_wrapj   s*    !$$!!$$0!$0$c         C   sU   | d d g ƒ } | j  d k s' t ‚ t j | t j d d g ƒ k ƒ sQ t ‚ d S(   sB   Can create a column without supplying name, which defaults to Nonei   i   N(   R   t   NoneR   R	   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_name_none   s    c         C   sÿ   | d t  j d d d g ƒ t j ƒ } t  j | j t  j d d d g ƒ k ƒ sX t ‚ t  j | j t j k ƒ sy t ‚ | d t  j d d d g ƒ t j d t j ƒ } t  j | j t  j d d d g ƒ k ƒ sÚ t ‚ t  j | j t j k ƒ sû t ‚ d  S(	   NRK   i   i   i   RG   id   iÈ   i,  (	   R	   R   t   uRH   R   RK   R   RG   t   cm(   R   R   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_quantity_init“   s    (0!10c         C   sp  | d d d g d d d d d d	 d
 d d i d d 6ƒ} d | _  d | _ d | _ d | _ i d d 6| _ xÊ t d d ƒ t d d ƒ t j d d g ƒ t j t	 t
 t	 g ƒ f D]ƒ } | | } | j  d k sÙ t ‚ | j t j k sñ t ‚ | j d k st ‚ | j d k st ‚ | j i d d 6k s´ t ‚ q´ W| d } x$ d D] } t | | ƒ sLt ‚ qLWd S(   s   
        Test for issue #3023: when calling getitem with a MaskedArray subclass
        the original object attributes are not copied.
        i   i   i   R   R   RG   RH   R4   t   it   descriptiont   aat   metat   bRI   t   i2t   bbt   bbbi    N(   R   RG   R4   R_   Ra   (   R   RG   R4   R_   Ra   t   sliceRY   R	   R   R   R   R   R[   RI   t   hasattr(   R   R   R>   t   itemR   t   valt   attr(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt'   test_attrs_survive_getitem_after_change   s$    $				-
 
c      	   C   s*  | d d d g d d d d d d	 ƒ} t  j | j d d d
 g t j k ƒ sU t ‚ t  j | j j d d d
 g t j j k ƒ s‰ t ‚ t  j | j | j d	 ƒ k ƒ s° t ‚ t  j | j j | j d	 ƒ j k ƒ sÝ t ‚ t  j j	 | j t j
 ƒ j d d d g t j
 j ƒ t  j j	 | j d ƒ j d d d g t j
 j ƒ t  j j	 | j t j t j j ƒ  ƒ j d d d g ƒ | d d d g d d d d d d  ƒ} t j t j ƒ  | j t j
 ƒ Wd  QXt  j | j t j ƒ t  j d d d g ƒ k ƒ st ‚ d d d g t j
 } | | j t j
 ƒ (t  j j	 | d d d g ƒ | | j j ƒ  (t  j j	 | d d d g ƒ | | j (t  j j	 | d d d g ƒ | d d d g d d d t d d	 ƒ} | | j (t  j j	 | d d d g ƒ | d d d g d d d d	 ƒ} t j t ƒ  | j Wd  QXd  S(   Ni   i   i   R   R   R"   RF   RG   RH   g      @gü©ñÒMbP?gü©ñÒMb`?gú~j¼t“h?RI   gB—pè­¼r@gB—pè­¼b@gk5=‹’ûX@i   iè  i¸  iˆ  t   argt   stuff(   R	   R   t   quantityR[   RH   R   t   valuet   tot   testingt   assert_allcloseRI   t   MHzt   equivalenciest   spectralRY   t   pytestt   raisest
   UnitsErrort   dimensionless_unscaledR   RA   RU   t	   TypeError(   R   R   RC   t   d_nounitt   qt   d2t   d3(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_to_quantity¹   s4    '.4'-52''9
'
!c         C   s  t  j r t t t j f n t t j f } xÒ| D]Ê} | d d g d d g g ƒ } | d ƒ } | d ƒ } t j | | d d g k ƒ s’ t ‚ t | | ƒ t | d ƒ rº t j	 j
 n t j k sÌ t ‚ | | j d k så t ‚ | | | !} t j | d d g g k ƒ st ‚ t | | ƒ s+t ‚ | j d	 k s@t ‚ | d d g ƒ } t j | | d k ƒ sqt ‚ t | | t j ƒ st ‚ | | j d
 k s¦t ‚ | | | !} t j | d g k ƒ sÑt ‚ t | | ƒ sæt ‚ | j d k s1 t ‚ q1 Wd S(   s¤   
        Tests for #3095, which forces integer item access to always return a plain
        ndarray or MaskedArray, even in the case of a multi-dim column.
        i   i   i   i   i    RN   N(   i   (   i   i   (    (   i   (   R   t   PY2RU   t   longR	   R   R   R   Rg   R   R!   R
   RV   R   RT   (   R   R   t   integer_typest   int_typeR   t   i0t   i1t   c01(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_item_access_typeå   s(    *%:$c         C   s9  | d d d g d d d t  d d d	 d
 d d d i d d 6d d 6ƒ} | j d d ƒ } t j | d d d d g k ƒ s€ t ‚ | j | ƒ s• t ‚ t | ƒ t | ƒ k s³ t ‚ t | d ƒ rã | j j	 | j
 j	 k sã t ‚ n  | j d d ƒ } t j | d d d d g k ƒ st ‚ | j d d ƒ } t j | d d d d g k ƒ sUt ‚ | j d d ƒ } t j | d d d d g k ƒ sŽt ‚ | j d d d d g ƒ } t | d ƒ rÙ| j j	 | j
 j	 k sÙt ‚ n  t j t t f ƒ  | j d d ƒ } Wd  QXt j t t f ƒ  | j d d ƒ } Wd  QXd  S(   Ni    i   i   R   R   R"   RG   t   mJyR4   s   %iR_   s   test columnRa   i   R   i   RC   id   RN   iÿÿÿÿi   iýÿÿÿiÈ   i,  iüÿÿÿi   (   RU   t   insertR	   R   R   t   attrs_equalR   Rg   RK   RV   RN   Rv   Rw   t
   ValueErrort
   IndexError(   R   R   R   R>   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_insert_basic  s*    *'!'''!c         C   s¾   | d d g d d g g ƒ } | j  d d d g d d ƒ} t j | d d d d d d g k ƒ si t ‚ | j  d d d g d d ƒ} t j | d d d g d d d g g k ƒ sº t ‚ d S(	   s"   Insert with non-default axis kwargi   i   i   i   i   i   RM   N(   R‰   RY   R	   R   R   (   R   R   R   R>   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_insert_axis"  s
    -c      	   C   sõ   | d d g d d g g d d d t  ƒ} | j d d d	 g ƒ } t j | d d g d d	 g d d g g k ƒ sx t ‚ | j d d ƒ } t j | d d g d d g d d g g k ƒ sÀ t ‚ t j t ƒ   | j d d d	 d
 g ƒ } Wd  QXd  S(   Ni   i   i   i   R   R   R"   id   iÈ   i,  (   RU   R‰   R	   R   R   Rv   Rw   R‹   (   R   R   R   R>   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_insert_multidim,  s    66c         C   sj   | d d d  g d d d t ƒ} | j d d d g ƒ } t j | d d d g d d  g k ƒ sf t ‚ d  S(   NR   i   R   R"   id   iÈ   (   RY   t   objectR‰   R	   R   R   (   R   R   R   R>   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_insert_object<  s    !c      
   C   s_  t  j d d d g d d d d d t t t g ƒ} | j d d	 ƒ } t j | j j d d	 d d g k ƒ sr t ‚ | j	 d k s‡ t ‚ t j | j j
 t t t t g k ƒ s´ t ‚ t | ƒ t | ƒ k sÒ t ‚ x† t t f D]x } | j d d	 d | ƒ} t j | j j d d	 d d g k ƒ s*t ‚ t j | j j
 t | t t g k ƒ sß t ‚ qß Wd  S(
   Ni    i   i   R   R   t
   fill_valuei'  RN   id   (   R   RW   R   R   R‰   R	   R   RK   R   R’   RN   R   (   R   R   R>   RN   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_insert_maskedC  s    !---c         C   s   t  j d d g d d g g d d d t ƒ} | j d d d	 g d
 t ƒ} t j | j j d d g d d	 g d d g g k ƒ s‡ t ‚ t j | j j	 t
 t
 g t t g t
 t
 g g k ƒ sÃ t ‚ | j d d d	 g d
 t t
 g ƒ} t j | j j d d g d d	 g d d g g k ƒ s#t ‚ t j | j j	 t
 t
 g t t
 g t
 t
 g g k ƒ s_t ‚ t j t ƒ , | j d d d	 g d
 t t
 t g ƒ} Wd  QXd  S(   Ni   i   i   i   R   R   R"   id   iÈ   RN   (   R   RW   RU   R‰   R   R	   R   RK   R   RN   R   Rv   Rw   R‹   (   R   R   R>   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_insert_masked_multidimS  s    <<$<<c         C   sZ   t  j d d g d d g g d d d d ƒ} t j t ƒ  t t g | d _ Wd QXd S(   ss   
        When table is not masked and trying to set mask on column then
        it's Raise AttributeError.
        i   i   i   i   t   namesR   Rb   R"   RB   RF   N(   R   Rb   (   RB   RF   (   R   t   TableRv   Rw   t   AttributeErrorR   R   RN   (   R   t   t(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_mask_on_non_masked_tableb  s    -(   R5   t
   __module__R   R'   R0   R6   R?   RE   RL   RX   RZ   R]   Rk   R   R‡   R   RŽ   R   R‘   R“   R”   R™   (    (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyR      s(   						
		#		
		,			
				t   TestAttrEqualc           B   sh   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   sE   Bunch of tests originally from ATpy that test the attrs_equal method.c         C   sO   | d d d t  d d ƒ } | d d d t  d d ƒ } | j | ƒ sK t ‚ d  S(   NR   R   R"   RG   Rˆ   (   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_5q  s    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ s‹ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   (   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_6v  s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   Rb   (   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_7}  s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   (   RU   R<   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_8„  s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   s   erg.cm-2.s-1.Hz-1(   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_9‹  s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   s   %g(   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_10’  s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   s   another test column(   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_11™  s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   t   e(   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_12   s
    c         C   s   | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | d d d t  d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ sŒ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   i	   (   RU   RŠ   R   (   R   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_13§  s
    c         C   sª   t  j d d d t d d d d d d	 d
 i d d 6d d 6ƒ } t  j d d d t d d d d d d	 d
 i d d 6d d 6ƒ } | j | ƒ s‘ t ‚ | j | ƒ s¦ t ‚ d  S(   NR   R   R"   RG   Rˆ   R4   s   %iR_   s   test columnRa   i   R   i   RC   (   R   R   RU   RW   RŠ   R   (   R   R>   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_col_and_masked_col®  s    !!(   R5   Rš   t   __doc__Rœ   R   Rž   RŸ   R    R¡   R¢   R¤   R¥   R¦   (    (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyR›   n  s   									(   t   MetaBaseTestt   TestMetaColumnc           B   s   e  Z e j Z d  Z RS(   (    (   R5   Rš   R   R   t
   test_classt   args(    (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyR©   ¾  s   	t   TestMetaMaskedColumnc           B   s   e  Z e j Z d  Z RS(   (    (   R5   Rš   R   RW   Rª   R«   (    (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyR¬   Ã  s   	c          C   s@  t  j d d d g d d d d d d	 d
 d d i d d 6ƒ }  |  d d !j d k sY t ‚ |  d d !j d k su t ‚ |  d d !j d	 k s‘ t ‚ |  d d !j d k s­ t ‚ |  d d !j d d k sÍ t ‚ t  j d d d g d d d d d d	 d
 d d i d d 6ƒ }  |  d d !j d k s&t ‚ |  d d !j d k sBt ‚ |  d d !j d	 k s^t ‚ |  d d !j d k szt ‚ |  d d !j d d k sšt ‚ t  j d d d d g d d d d d d	 d
 d d i d d 6ƒ }  x¢ |  j	 d d g ƒ t
 j	 |  d d g ƒ g D]s } | j d k s#t ‚ | j d k s8t ‚ | j d	 k sMt ‚ | j d k sbt ‚ | j d d k st ‚ qWxi |  j	 d ƒ t
 j	 |  d ƒ g D]F } | d k s¹t ‚ | j d k sÎt ‚ t | t  j ƒ s¡t ‚ q¡Wt  j d d d d g d d d d d d	 d
 d d i d d 6ƒ }  x¢ |  j	 d d g ƒ t
 j	 |  d d g ƒ g D]s } | j d k stt ‚ | j d k s‰t ‚ | j d	 k sžt ‚ | j d k s³t ‚ | j d d k sYt ‚ qYWxi |  j	 d ƒ t
 j	 |  d ƒ g D]F } | d k s
t ‚ | j d k st ‚ t | t  j ƒ sòt ‚ qòWd S(   sÈ   
    Regression test for #1471: MaskedArray does not call __array_finalize__ so
    the meta-data was not getting copied over. By overloading _update_from we
    are able to work around this bug.
    RK   i   i   R   R   R_   Rb   RG   RH   R4   s   %iRa   i   R   i   i    N(    (    (   R   R   R   R   R_   RG   R4   Ra   RW   t   takeR	   RV   R   (   R   t   subset(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt    test_getitem_metadata_regressionÈ  sD    	= = @4(@4(c          C   s;   t  j d d d g ƒ }  t j |  d d ƒ} t | ƒ d  S(   Ni   i   i   R   R   (   R	   R   R   R   R    (   R$   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_unicode_guidelinesþ  s    c          C   sC   t  j d ƒ }  t |  ƒ d k s' t ‚ t |  ƒ d k s? t ‚ d S(   s£   
    Column is not designed to hold scalars, but for numpy 1.6 this can happen:

      >> type(np.std(table.Column([1, 2])))
      astropy.table.column.Column
    g      ø?s   1.5N(   R   R   R3   R   R#   (   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_scalar_column  s    c          C   sy  t  j d d g d d g g d d d g ƒ}  t |  d t  j j ƒ sL t ‚ t |  d t  j j ƒ sk t ‚ d |  d _ t |  d t j ƒ s” t ‚ t |  d t  j j ƒ s³ t ‚ t |  d d	 t j ƒ sÓ t ‚ t |  d	 d t j ƒ só t ‚ t |  d d	 t j ƒ st ‚ t |  d	 d t j ƒ s5t ‚ t j	 t j
 t j d ƒ |  d _ t |  d t j ƒ sut ‚ d
 S(   sS   
    Ensures that a QTable that gets assigned a unit switches to be Quantity-y
    i   i   i   gÍÌÌÌÌÌ@R•   R^   t   fs   km/si    N(   R   t   QTableR   t   columnR   R   RG   R[   t   Quantityt   dexR\   t   st   Dex(   t   qtab(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_qtable_column_conversion  s    -  !!$t   maskedc         C   sl  t  j d d g g d d g d |  ƒ} t ƒ  f } d d l m } m } d | d d	 <t | ƒ d
 k so t ‚ d | d (t | ƒ d
 k s’ t ‚ Wd QXt ƒ  Ê } | | ƒ  ƒ } d | d d
 <| d d
 d k sÛ t ‚ t | ƒ d	 k só t ‚ d t | d
 j	 ƒ k st ‚ | d
 j
 | j
 d	 k s2t ‚ | d
 j t  j k sNt ‚ d | d
 j k sgt ‚ Wd QXt ƒ  t } d d g | d (t j | d d d g k ƒ s¯t ‚ t | ƒ d	 k sÇt ‚ d t | d
 j	 ƒ k sæt ‚ Wd QXt ƒ  q } t j d d g ƒ } d d g | (| | d (t j | d d d g k ƒ sJt ‚ t | ƒ d
 k sbt ‚ Wd QXd S(   s…   
    Test warnings associated with in-place assignment to a string
    column that results in truncation of the right hand side.
    R`   Rd   R•   R   R»   iÿÿÿÿ(   t   currentframet   getframeinfot   cci   i    t   ddNt   eeet   ees9   truncated right side string(s) longer than 2 character(s)t   test_columnt   fft   gggt   ggt   fffft   ggggR²   t   g(   R   R–   R   t   inspectR¼   R½   R   R   R#   t   messaget   linenot   categoryt   StringTruncateWarningt   filenameR	   R   R   (   R»   R˜   t   wR¼   R½   t	   frameinfoRi   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_string_truncation_warning*  s:    ' %"%c       	   C   s‘  xß d d g d d g d d g f D]¼ }  t  j |  ƒ } t ƒ  œ } t j j | d <t | ƒ d k sk t ‚ t j | j	 t
 t g k ƒ s t ‚ t j j | (t | ƒ d k s´ t ‚ t j | j	 t t g k ƒ sØ t ‚ Wd QXq" Wt  j d	 d
 g ƒ } t ƒ  ‹ } t j j d g | (| d d k s,t ‚ t j | j	 t t
 g k ƒ sPt ‚ t | ƒ d k sht ‚ d t | d j ƒ k s‡t ‚ Wd QXd S(   s¡   
    Test warnings associated with in-place assignment to a string
    to a masked column, specifically where the right hand side
    contains np.ma.masked.
    R   Rb   i   i   g      ð?g       @i    NR`   Rd   RÄ   RÅ   s9   truncated right side string(s) longer than 2 character(s)(   R   RW   R   R	   R   R»   R   R   R   RN   R   R   R#   RÊ   (   t   valuest   mcRÏ   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt%   test_string_truncation_warning_maskedY  s"    ($.$s   six.PY2R   c         C   s³   d } |  | d g d d ƒ} | j  j d k s6 t ‚ | d | k sL t ‚ t | d t ƒ se t ‚ t | d  t j ƒ s t ‚ t j | d  t j	 | d g ƒ k ƒ s¯ t ‚ d S(   sM   
    Create a bytestring Column from strings (including unicode) in Py3.
    u   bÃ¤t   defR"   t   Si    i   N(
   R"   t   charR   R   R#   R   R   R	   R   R   (   R   t   ubaR   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt)   test_col_unicode_sandwich_create_from_str|  s    c         C   sv  t  j r d n d } | j d ƒ } |  | d g ƒ } | j j d k sN t ‚ t  j rg | d | k n | ss t ‚ t | d t ƒ sŒ t ‚ t | d  t j	 ƒ s¨ t ‚ t
 j | d  t
 j | d g ƒ k ƒ sÖ t ‚ t | t j	 ƒ sï t ‚ | j j d k st ‚ t  j s5t
 j | | d g k ƒ s5t ‚ n  | | d g k } t | ƒ t | j ƒ k sht ‚ | j j d k s€t ‚ t
 j | ƒ s•t ‚ t
 j | t
 j | d	 g ƒ k ƒ s¿t ‚ t  j sõt
 j | t
 j | d g ƒ k ƒ sõt ‚ n  t  j r| f n	 | | f } x\ | D]T } | | k } t | ƒ t | j ƒ k sMt ‚ t
 j | t t g k ƒ st ‚ qWd
 S(   s~   
    Create a bytestring Column from bytes and ensure that it works in Python 3 in
    a convenient way like in Python 2.
    t   bau   bÃ¤s   utf-8RÕ   RÖ   i    i   t   ?u   defN(   R   R€   t   encodeR"   R×   R   R   R#   R   R   R	   R   R   R   RK   R   R   (   R   RØ   t   uba8R   t   okt   cmpst   cmp(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_col_unicode_sandwich_bytes  s0    %.	$!*	-!c          C   s™  t  j r d n d }  |  j d ƒ } t j |  d g d d ƒ} | d |  k sU t ‚ t | d  t j ƒ sq t ‚ t | d t  j ƒ s t ‚ t j	 | d  t j
 |  d g ƒ k ƒ s» t ‚ t | t j ƒ sÔ t ‚ | j j d k sí t ‚ | |  d g k } t | ƒ t j k st ‚ | j j d	 k s2t ‚ t j	 | ƒ sGt ‚ t  j rtt j	 | | d g k ƒ s•t ‚ n! t j	 | | d g k ƒ s•t ‚ d
 S(   s<   
    Sanity check that Unicode Column behaves normally.
    RÚ   u   bÃ¤s   utf-8RÕ   R"   t   Ui    i   RÛ   N(   R   R€   RÜ   R   R   R   R   t	   text_typeR	   R   R   R"   R×   R   R
   (   RØ   RÝ   R   RÞ   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt!   test_col_unicode_sandwich_unicode¶  s     .	$c          C   sè  t  j d d g ƒ }  t j j |  d <t |  d  t  j ƒ sA t ‚ t |  d t ƒ sZ t ‚ |  d d k sp t ‚ |  d t j j k sŒ t ‚ t |  t  j ƒ s¥ t ‚ |  j j	 d k s¾ t ‚ |  d d g k } | d t
 k sæ t ‚ | d t j j k st ‚ t j |  d d g k ƒ s#t ‚ t j |  t j d d g ƒ k ƒ sMt ‚ t j |  t j d d g ƒ k ƒ swt ‚ xj d	 D]b } |  | k } t | ƒ t j j k s®t ‚ | d t
 k sÄt ‚ | d t j j k s~t ‚ q~Wd S(
   sy   
    Create a bytestring MaskedColumn and ensure that it works in Python 3 in
    a convenient way like in Python 2.
    t   abcRÕ   i   i    RÖ   u   abcu   defN(   u   abcRå   (   R   RW   R	   R   R»   R   R   R#   R"   R×   R   R   R   R   R!   (   R   RÞ   Rà   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt    test_masked_col_unicode_sandwichÓ  s&    !**c         C   s.  t  j r d n d } |  d d g ƒ } d | d <t j | d d g k ƒ sR t ‚ | | d <t j | | d g k ƒ s} t ‚ | j ƒ  d	 d
 d | d g k s¥ t ‚ d | (t j | d d g k ƒ sÍ t ‚ | | (t j | | | g k ƒ sõ t ‚ d | (| d g | (t j | | d g k ƒ s*t ‚ d S(   s   
    Test setting
    RÚ   u   bÃ¤Rå   RÕ   R`   i    u   aau   defu   Noneu   ----s     u    defR¾   u   ccR9   N(   R   R€   R	   R   R   t   pformat(   R   RØ   R   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_unicode_sandwich_setñ  s    
!
!(!!t   class1t   class2c         C   sQ  |  d d g ƒ } | t  k r- t  d ƒ } n- | t k rH d d g } n | d d g ƒ } t j ry | t  k ry t j ƒ  St j | | k t t	 g k ƒ s  t
 ‚ t j | | k t t	 g k ƒ sÇ t
 ‚ t j | | k t	 t g k ƒ sî t
 ‚ t j | | k t	 t g k ƒ st
 ‚ t j | | k t	 t g k ƒ s<t
 ‚ t j | | k t	 t	 g k ƒ sct
 ‚ t j | | k t t	 g k ƒ sŠt
 ‚ t j | | k t t g k ƒ s±t
 ‚ t j | | k  t	 t	 g k ƒ sØt
 ‚ t j | | k  t	 t g k ƒ sÿt
 ‚ t j | | k t t g k ƒ s&t
 ‚ t j | | k t t	 g k ƒ sMt
 ‚ d S(   sŽ   Test that comparing a bytestring Column/MaskedColumn with various
    str (unicode) object types gives the expected result.  Tests #6838.
    R   R   Rb   N(   R#   t   listR   R€   Rv   t   skipR	   R   R   R   R   (   Ré   Rê   t   obj1t   obj2(    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   test_unicode_sandwich_compare  s(    
'''''''''''c          C   sm  t  j d d d d g d t t t t g ƒ}  t  j d d d d g d t t t t g ƒ} x„ |  | k | |  k f D]j } | d t j j k s• t ‚ | d t j j k s± t ‚ | d t j j k sÍ t ‚ | d	 ss t ‚ qs Wx… |  | k | |  k f D]k } | d t j j k st ‚ | d t j j k s8t ‚ | d t j j k sTt ‚ | d	 sú t ‚ qú Wd
 S(   s"   Test the fix for #6839 from #6899.R   Rb   R   RC   RN   i    i   i   i   N(   R   RW   R   R   R	   R   R»   R   (   R>   R   Rà   (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt$   test_unicode_sandwich_masked_compare0  s    ()   R   Rv   t   numpyR	   t   tests.helperR    R   R9   R   R   R[   t   externR   R   R›   t   utils.tests.test_metadataR¨   R©   R¬   R¯   R°   R±   Rº   t   markt   parametrizeR   R   RÑ   RÔ   t   skipifR   RW   RÙ   Rá   Rä   Ræ   Rè   R#   Rë   Rï   Rð   (    (    (    s>   lib/python2.7/site-packages/astropy/table/tests/test_column.pyt   <module>   s6   ÿ ^M	6			$/	#-*)		*3#