ó
šxŠ\c           @  s  d  d l  m Z d  d l m Z m Z d  d l Z d  d l Z d  d l Z d  d l m	 Z	 d  d l
 Z d  d l
 m Z m Z m Z m Z m Z m Z m Z d  d l m Z m Z d  d l m Z d  d l j j Z d  d l m Z m Z m Z d	 d d
 „  ƒ  YZ d S(   iÿÿÿÿ(   t   print_function(   t   datetimet	   timedeltaN(   t   StringIO(   t   Categoricalt	   DataFramet   Seriest	   Timestampt   compatt
   date_ranget   option_context(   t   IntervalArrayt   integer_array(   t   IntBlock(   t   assert_almost_equalt   assert_frame_equalt   assert_series_equalt   TestDataFrameBlockInternalsc           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 RS(   c         C  s¬   t  d d d d d ƒ} | d } t i | d 6ƒ } | d j j d k sQ t ‚ t j | j d
 <| d j j d  k s} t ‚ | j d k s’ t ‚ | d | k s¨ t ‚ d  S(   Nt   20130101t   periodsi   t   tzs
   US/Easterni   t   Bt   Di    (   i   i    (	   R	   R   t   _valuest   freqt   AssertionErrort   pdt   NaTt   iloct   None(   t   selft   dtit   tst   df(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt,   test_setitem_invalidates_datetime_index_freq   s    
c         C  sx   t  | j d t ƒ} t  | j d t ƒ} t | | ƒ t  | j d t j ƒ} t  | j d t j ƒ} t | | ƒ d  S(   Nt   dtype(   R   t   _datat   intt   _seriesR   t   npt   int32(   R   t   float_framet   castedt   expected(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_cast_internals-   s    c         C  s¼   d | d <| j  ƒ  } t | j j ƒ d k s4 t ‚ | j  ƒ  } | | k	 sR t ‚ t j | | ƒ d | d <t | j j ƒ d k sŠ t ‚ | j  d t ƒ t | j j ƒ d k s¸ t ‚ d  S(   Ng      @t   Ei   g       @t   Fi   t   inplace(   t   _consolidatet   lenR$   t   blocksR   t   tmR   t   True(   R   R)   t   consolidatedt   recons(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_consolidate6   s    

c         C  sL   | j  ƒ  } x9 t t d ƒ t d ƒ ƒ D] } t | ƒ | t | ƒ <q( Wd  S(   Nt   At   Z(   t   copyt   ranget   ordt   chr(   R   R)   t   framet   letter(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_consolidate_inplaceF   s    "c         C  sB   d | d <| j  j ƒ  s  t ‚ | j } | j  j ƒ  s> t ‚ d  S(   Ng      @R-   (   R$   t   is_consolidatedR   t   values(   R   R)   t   _(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_values_consolidateM   s    
	c         C  sf   d | j  d <| j  d d k j ƒ  s, t ‚ d | d <d | j  d <| j  d d k j ƒ  sb t ‚ d  S(   Ni   g      @R-   i   (   RB   t   allR   (   R   R)   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_modify_valuesS   s
    
c         C  sM   d | d <| j  j ƒ  } d | | d k <d | | d k <t | | j  ƒ d  S(   Ng      @R-   i   i   (   RB   R:   R   (   R   R)   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_boolean_set_uncons\   s
    
c         C  s?   d | d <| d d d d g j  } | j t j k s; t ‚ d  S(   Nt   bart   fooR8   R   t   CR   (   RB   R#   R'   t   float64R   (   R   R)   RB   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_values_numeric_colse   s    
c         C  sæ  | d d d d g j  } | j t j k s1 t ‚ | d d d g j  } | j t j k s_ t ‚ | d g j  } | j t j k s‡ t ‚ | d d d d g j  } | j t j k s¸ t ‚ | d d g j  } | j t j k sã t ‚ | d d d g j  } | j t j k st ‚ | d d g j  } | j t j k s<t ‚ | d d g j  } | j t j	 k sgt ‚ | d d g j  } | j t j k s’t ‚ | d g j  } | j t j	 k sºt ‚ | d g j  } | j t j
 k sât ‚ d  S(   NR8   R   RJ   R   (   RB   R#   R'   RK   R   t   float32t   float16t   int64t   uint64R(   t   uint8(   R   t   mixed_float_framet   mixed_int_frameRB   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_values_lcdk   s,    c         C  s]  t  i d g d 6ƒ } | d } t t j d g t j ƒ d d ƒ} t | | ƒ t  i d g d 6ƒ } | d } t t j d g t j ƒ d d ƒ} t | | ƒ t  i t d d d ƒ t g d 6ƒ } | d } t t j t d d d ƒ t g t j	 ƒ d d ƒ} t | | ƒ t  i d  d g d 6ƒ } | d } t t j t j d g t j ƒ d d ƒ} t | | ƒ t  i d d g d 6ƒ } | d } t t j d d g t j ƒ d d ƒ} t | | ƒ t  i d d	 g d 6ƒ } | d } t t j d d	 g t j ƒ d d ƒ} t | | ƒ t  i d d
 g d 6ƒ } | d } t t j d d
 g t j ƒ d d ƒ} t | | ƒ t  i d t g d 6ƒ } | d } t t j d t g t j	 ƒ d d ƒ} t | | ƒ t  i d d  g d 6ƒ } | d } t t j d t j g t j ƒ d d ƒ} t | | ƒ t  i d d  g d 6ƒ } | d } t t j d t j g t j ƒ d d ƒ} t | | ƒ t  i d d t d  g d 6ƒ } | d } t t j d d t d  g t j	 ƒ d d ƒ} t | | ƒ t  i d d t d d d ƒ d  g d 6ƒ } | d } t t j d d t d d d ƒ d  g t j	 ƒ d d ƒ} t | | ƒ d  S(   Ni   i?   i   R8   t   nameiÕ  g      ð?y               @i   g      @g       @iÖ  l            l   ÿÿÿÿ l            l   ÿÿÿÿ l            l            y      ð?       @y      ð?       @y      ð?       @y      ð?       @y      ð?       @y      ð?       @y      ð?       @y      ð?       @(   R   R   R'   t   asarrayRO   R   RP   R   R4   t   object_R   t   nant   float_t   complex_(   R   R!   t   resultR+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_constructor_with_convert“   sh    
$
$%
*	
*
'
'
'
'
*
	!
	$+
c         C  s:  t  d d d ƒ t j t  d d d ƒ g t  d d d ƒ t  d d d ƒ t  d d d ƒ g g } t | ƒ } | j ƒ  j ƒ  } t i d d 6ƒ } t  j ƒ  | d <t d	 d d
 d ƒ | d <| d j	 d k sÐ t
 ‚ | d j	 d k sé t
 ‚ | j ƒ  j ƒ  } t i d d 6d d 6d d 6d d 6ƒ j ƒ  } t | | ƒ d  S(   NiÑ  i   i   i   iÐ  i   s   datetime64[ns]R   t   dayst   secondsR   s   M8[ns]s   m8[ns]i   RK   t   objects   timedelta64[ns](   R   R'   RX   R   t   get_dtype_countst   sort_valuesR   t   nowR   R#   R   R   (   R   t   float_string_framet   dataR!   R[   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_construction_with_mixedÖ   s     'c         C  s  t  j d d d g d d ƒ} t d t d ƒ ƒ } | | d <t i t j d d	 d d
 d ƒd 6d t d ƒ ƒ} t | | ƒ t i t d ƒ d 6t d d	 d ƒd 6d t d ƒ ƒ} t d t d ƒ ƒ } t  j	 d ƒ | d <t  j d d d g d d ƒ| d <t | | ƒ d  S(   Ni   i   i   R#   s   timedelta64[s]t   indexR8   s   00:00:01R   R   t   sR   t   dt1t   dt2s
   2013-01-01s
   2013-01-02s
   2013-01-03s   datetime64[D](
   R'   t   arrayR   R;   R   t   timedelta_rangeR   R   R	   t
   datetime64(   R   t   arrR!   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt"   test_construction_with_conversionsï   s     
c         C  sV   d „  } t  j t | d d d g ƒ | d ƒ | d	 ƒ t j ƒ  sR | d
 ƒ n  d  S(   Nc         S  sO   t  t j t d d d ƒ d d f d ƒ ƒ } t d | d d d	 d
 g d |  ƒ S(   NiÑ  i   t   aai   i	   Rd   t   columnsR8   R   RJ   R#   (   t   listt	   itertoolst   repeatR   R   (   R#   Rd   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   f  s
    R8   s   datetime64[h]R   t   strRJ   R(   RO   RK   s   M8[ns](   R8   s   datetime64[h](   R   Ru   (   RJ   R(   (   t   pytestt   raisest   NotImplementedErrorR   t   is_platform_windows(   R   Rt   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt    test_constructor_compound_dtypes
  s    	


c         C  s¶   t  j i d d g d 6d d g d 6d d g d	 6ƒ } | j ƒ  d d d	 g } | j j d
 j | j j d
 j k s{ t ‚ t | | ƒ | j | ƒ s t ‚ | j | ƒ s² t ‚ d  S(   Nt   xt   yR8   i   i   R   t   wt   zRJ   i    (	   R   R   t   reset_indexR$   R2   R#   R   R   t   equals(   R   t   df0t   df1(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_equals_different_blocks#  s    #,c         C  s¶   t  | d t ƒ} | j d } t j t d t ƒ | j ƒ  } Wd  QXxJ | j ƒ  D]< \ } } | | k rT | | d | j	 d  d  … | f <qT qT W| | j
 | | ƒ s² t ‚ d  S(   NR:   i    t   check_stackleveli   (   R   R4   Rp   R3   t   assert_produces_warningt   FutureWarningt   Falset	   as_blockst   itemst   locR€   R   (   R   R)   R!   t   columnR2   R#   t   _df(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_copy_blocks1  s    
(c         C  s»   t  | d t ƒ} | j d } t j t d t ƒ | j d t ƒ } Wd  QXxJ | j ƒ  D]< \ } } | | k rZ | | d | j	 d  d  … | f <qZ qZ W| | j
 | | ƒ s· t ‚ d  S(   NR:   i    R„   i   (   R   R4   Rp   R3   R…   R†   R‡   Rˆ   R‰   RŠ   R€   R   (   R   R)   R!   R‹   R2   R#   RŒ   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_no_copy_blocksC  s    
(c         C  sT   | j  ƒ  } | d | d <d | k s, t ‚ | j  ƒ  } | j | j k	 sP t ‚ d  S(   NR8   R-   (   R:   R   R$   (   R   R)   Rc   t   copR:   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt	   test_copyU  s
    c         C  s_   t  j | ƒ } t | | ƒ | j j t  j | ƒ } t | ƒ t  j | ƒ } t | | ƒ d  S(   N(   R3   t   round_trip_pickleR   R$   t   ndimt   repr(   R   Rc   t   empty_framet   timezone_framet	   unpickled(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_pickle^  s    

c         C  sÿ   d } t  j t | ƒ d d d g ƒ} | j } | j | _ | j d ƒ } | j d ƒ } d | j _ | j	 } | j | _ | j d ƒ } | j d ƒ } d | j _ | j | _ | j | _	 t
 j t  j | j ƒ | j ƒ t
 j t  j | j	 ƒ | j ƒ d  S(	   NsÐ   starting,ending,measure
2012-06-21 00:00,2012-06-23 07:00,77
2012-06-23 07:00,2012-06-23 16:30,65
2012-06-23 16:30,2012-06-25 08:00,77
2012-06-25 08:00,2012-06-26 12:00,0
2012-06-26 12:00,2012-06-27 08:00,77
t   parse_datesi    i   s
   US/Easternt   UTCt   startingt   ending(   R   t   read_csvR   Rš   RB   Rf   t   tz_localizet
   tz_convertRU   R›   R3   t   assert_index_equalt   DatetimeIndex(   R   Rd   R!   t   ser_startingt
   ser_ending(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_consolidate_datetime64m  s"    
!		c         C  s#   | j  s t ‚ | j  s t ‚ d  S(   N(   t   _is_mixed_typeR   (   R   R)   Rc   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_is_mixed_type  s    c   	      C  sÀ  t  j t  j ƒ j } t  j t  j ƒ j } t  j d ƒ j } t  j t  j ƒ j } t i d d 6d d 6d d 6t d ƒ d	 6d
 t  j d ƒ ƒ} | j	 ƒ  } t
 i d d 6d d 6d | 6d | 6ƒ } | j ƒ  } | j ƒ  } t | | ƒ t i d d 6d d 6d d 6t  j d g d d d ƒd 6t  j d g d d d ƒd 6t  j d g d d d ƒd	 6t d ƒ d 6d
 t  j d ƒ ƒ} | j ƒ  } | j d  d  … d d d d d	 g f } t | | ƒ | j d  d  … d d g f } | j ƒ  } | j d  d  … g  f } t | | ƒ t j i d d g d 6d d g d 6t  j t  j g d 6ƒ } | j ƒ  } t j i d d g d 6t  j t  j g d 6ƒ } t | | ƒ | j ƒ  } | j ƒ  } | } t | | ƒ d  S(   Ns   M8[ns]g      ð?t   ai   t   bRI   t   ct   20010102Rt   Rf   i
   i   RO   RK   R#   RM   t   dR(   t   et   int16t   gRH   (   R'   R#   t   int_RU   RY   RW   R   R   t   arangeR`   R   t
   sort_indexR   Rj   t   _get_numeric_dataRŠ   R   t	   from_dictt   piR«   R:   (	   R   t   intnamet	   floatnamet   datetime64namet
   objectnameR!   R[   R+   t   only_obj(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_get_numeric_data‘  sF    (6/c      	   C  sÁ   t  i t d t j d d d d g d d ƒd 6t t d	 ƒ ƒ d
 6t d d d d t j d g d d ƒd 6t j t d ƒ ƒ d 6ƒ } | j	 ƒ  } | j
 d  d  … d d g f } t | | ƒ d  S(   Niöÿÿÿi    i
   i   i   R#   t   Int64R8   t   abcabcR   i   i   i   i   t   UInt8RJ   i   R   (   R   R   R'   RX   R   Rq   R   t   from_breaksR;   R±   RŠ   R   (   R   R!   R[   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt%   test_get_numeric_data_extension_dtype¾  s    ((c      	   C  s  | j  j  } | j d t ƒ } t | | ƒ | d j t j k sG t ‚ d | d <d | d <t | ƒ } d | d <d | d <d	 | j	 d
 d … d d g f <| j d t d t ƒ } | d j d k sË t ‚ | d j d k sä t ‚ | d j d k sý t ‚ | d j d k st ‚ t | d j
 ƒ  ƒ | d k s<t ‚ t | d j
 ƒ  ƒ | d k sbt ‚ | j ƒ  } | d j d ƒ | d <| d j d ƒ | d <| d j d k sµt ‚ | d j d k sÎt ‚ | j ƒ  } t j t d d ƒ | d j d ƒ Wd  QXt t d t d d d d g ƒ ƒ ƒ } | j d t d t ƒ } t t d t d t j d d g ƒ ƒ ƒ } t | | ƒ d  S(   NR   R8   s   1.t   Ht   1t   It   Jt   Kt   garbledi    i   t   numericRK   RO   t   matchs   invalid literalR(   Rg   i   t   nai   i   (   t   Tt   _convertR4   R   R#   R'   RK   R   R1   RŠ   t   dropnaR:   t   astypeRv   Rw   t
   ValueErrorR   t   dictR   RX   (   R   Rc   t   oopst	   convertedt   lengthR!   R[   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_convert_objectsÉ  s:    



&&'*c         C  s_   t  i d d d g d 6d d d g d 6d	 d
 d g d 6ƒ } | j d t ƒ } t | | ƒ d  S(   Ni   i   i   R¦   g      @i   i   R§   R{   R|   R~   R¨   R   (   R   RÉ   R4   R   (   R   t   mixed1t   mixed2(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt"   test_convert_objects_no_conversionó  s    9c      	   C  s§  t  i d d d d g d 6d d d d g d 6d	 t d
 d d ƒ t d
 d d ƒ t d
 d d ƒ g d	 6d d d d g d 6d d d d	 d g ƒ} | j d j ƒ  } | d j d k sº t ‚ | d j d k sÓ t ‚ | d	 j d k sì t ‚ | d j d k st ‚ t  i d d d g d 6d d d g d 6t d
 d d ƒ t d
 d d ƒ t d
 d d ƒ g d	 6d d d g d 6d d d d	 d g ƒ} t j | j d t	 ƒ | ƒ d  S(   NR¦   i   i   i   R§   g       @g      @gffffff@R¨   ià  Rª   Rp   RO   RK   s   M8[ns]R_   t   drop(
   R   R   R   t   infer_objectsR#   R   R3   R   R   R4   (   R   R!   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_infer_objectsù  s(    c         C  s³   t  d d  ƒ ž t t j j d ƒ d d d d ƒ} t | ƒ | d	 j d ƒ | d	 <t j | d d <t | ƒ | j ƒ  } | d j ƒ  } t	 j
 | d d ƒ s© t ‚ Wd  QXd  S(   Nt   chained_assignmenti   Rf   R¦   R§   R¨   Rª   Rp   R«   Rt   R­   t   hR_   (   i   i   (   R¦   R§   R¨   Rª   (   R«   Rt   R­   RÙ   (   R
   R   R   R'   t   randomR“   RË   t   NaNt   sumR   t   isnaR   (   R   t   YR[   t   exp(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt    test_stale_cached_series_bug_473  s    	

c         C  s‹   t  i d d d g d 6t t t g d 6d d d g d	 6d  d  d  g d
 6d d d g d 6ƒ } t j | j ƒ  j t j	 d d d g ƒ ƒ d  S(   Ni   i   i   R¦   R§   RI   RH   t   bazR¨   Rª   g…ëQ¸	@gX9´Èvâ?gÉv¾Ÿ/@R«   (
   R   R4   R‡   R   R3   RŸ   R±   Rp   R   t   Index(   R   R!   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   test_get_X_columns!  s    c   	      C  s  t  d d d g ƒ } t j | d <i  } xk t | j ƒ D]Z \ } } xK t d d ƒ D]: } | | k r€ d | | <t j | | <n  | | | | <qT Wq8 Wd } t | j t j	 | | ƒ | g f ƒ } t | j t j	 | | ƒ | g f ƒ } | | k od k n st
 ‚ d  S(   NRf   i    i   id   iÈ   (   R   R'   RX   t	   enumerateRf   R;   R1   RŠ   R   RÝ   R   (	   R   R!   t   wasColt   it   dtt   colt   myidt   firstt   second(    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt$   test_strange_column_corruption_issue-  s    
))c         C  sƒ   t  j d d d g ƒ j } t  j i | d 6ƒ } t  j i d d d g d 6ƒ } t j | | ƒ t | j j d t	 ƒ s t
 ‚ d  S(   Ni   i   i   R8   i    (   R   R   Rj   R   R3   R   t
   isinstanceR$   R2   R   R   (   R   Rm   R[   R+   (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt    test_constructor_no_pandas_arrayD  s
    (   t   __name__t
   __module__R"   R,   R7   R@   RD   RF   RG   RL   RT   R\   Re   Rn   Rz   Rƒ   R   RŽ   R   R—   R£   R¥   R¹   R¾   RÑ   RÔ   R×   Rà   Rã   Rì   Rî   (    (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyR      s:   												(	C										 		-		*					(    (    t
   __future__R    R   R   Rr   t   numpyR'   Rv   t   pandas.compatR   t   pandasR   R   R   R   R   R   R	   R
   t   pandas.core.arraysR   R   t   pandas.core.internals.blocksR   t   pandas.util.testingt   utilt   testingR3   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/pandas/tests/frame/test_block_internals.pyt   <module>   s   4