ó
šxŠ\c        	   @   sL  d  d l  Z d  d l Z d  d l m Z m Z d  d l m Z d  d l Z	 d  d l m
 Z
 m Z m Z m Z m Z d  d l m Z d  d l j j Z d  d l m Z d  d l m Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j  j! d e j" e j# f e j$ e j# f e j% e j# f e j& e j# f e j' e j' f e j# e j# f g ƒ d „  ƒ Z( d „  Z) d „  Z* d „  Z+ d „  Z, e j  j! d e- e. e j/ e g ƒ d „  ƒ Z0 e j  j! d d d d g e d d d g ƒ d d d g e d  ƒ e	 j1 e d! ƒ g g ƒ d" „  ƒ Z2 d# „  Z3 d$ „  Z4 e j  j! d% e d d& ƒ ƒ e j  j! d' e5 e6 e6 e6 e6 g e5 e6 g e6 g g ƒ e j  j! d( d) e j7 e j8 e j9 ƒ j: e j8 e j9 ƒ j; g ƒ e j  j! d* d+ „  d, „  d- „  g ƒ d. „  ƒ ƒ ƒ ƒ Z< d/ „  Z= d0 „  Z> d1 „  Z? d2 „  Z@ d3 „  ZA d4 „  ZB d5 „  ZC d6 „  ZD d S(7   iÿÿÿÿN(   t   lranget   range(   t
   is_integer(   t   Indext   Seriest	   Timestampt
   date_ranget   isna(   t   IndexingError(   t   assert_series_equal(   t   BDayc         C   s`   |  j  } | | j ƒ  k } | t | ƒ } | | } t | | ƒ t j | j | j | ƒ d  S(   N(   t   seriest   mediant   listR	   t   tmt   assert_index_equalt   index(   t	   test_datat   st   maskt   resultt   expected(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_getitem_boolean   s    	
c       
   C   sz  t  g  d t j ƒ}  d |  j _ |  |  j ƒ  }  |  j j d k sI t ‚ |  j t j k sa t ‚ t  d d g ƒ }  t  t j d d g d t	 ƒ} |  t  d g d t	 ƒ} t
 | | ƒ t  d d g ƒ }  t  d t	 d t g  d d ƒƒ } |  t  g  d t	 ƒ} t
 | | ƒ d } t j t d	 | ƒ |  t  g  d t ƒWd  QXt j t d	 | ƒ |  t  t g d t ƒWd  QXd  S(
   Nt   dtypet
   index_namet   At   BR   t   Ct   int64ss   Unalignable boolean Series provided as indexer \(index of the boolean Series and of the indexed object do not matcht   match(   R   t   npR   R   t   nameR   t   AssertionErrorR   t   nant   objectR	   R   t   pytestt   raisesR   t   boolt   True(   R   R   R   t   msg(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_getitem_boolean_empty   s$    !c   	      C   sè   |  j  } | | j ƒ  k } | j t ƒ } | | } | | } t | | ƒ | j ƒ  } | j ƒ  } d | | <d | | <t | | ƒ t j | d d +d } t j	 t
 d | ƒ | | Wd  QXt j	 t
 d | ƒ d | | <Wd  QXd  S(   Ni   i
   s3   cannot index with vector containing NA / NaN valuesR   (   R   R   t   astypeR"   R	   t   copyR   R!   R#   R$   t
   ValueError(	   R   R   R   t   omaskR   R   t   s2t   copR'   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_getitem_boolean_object=   s"    	



c      
   C   sÑ   |  j  } | j d d t ƒ  ƒ| j ƒ  k } d } t j t d | ƒ | | Wd  QXt j t d | ƒ d | | <Wd  QXt j t d | ƒ | j | Wd  QXt j t d | ƒ d | j | <Wd  QXd  S(   Ni   t   freqss   Unalignable boolean Series provided as indexer \(index of the boolean Series and of the indexed object do not matchR   (   t   tst   shiftR
   R   R#   R$   R   t   loc(   R   R1   t   mask_shiftedR'   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt#   test_getitem_setitem_boolean_cornerY   s    	$c         C   sÌ   |  j  |  j  j ƒ  k } |  j  j ƒ  } |  j  d | | <|  j  d } t | | | | ƒ |  j  j ƒ  } |  j  d d d !| | <|  j  d d d !j |  j  ƒ } |  j  | | | <t | | | | ƒ d  S(   Ni   i    i   (   R   R   R*   R	   t   reindex_like(   R   R   R   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_setitem_booleanl   s     c         C   s”   |  j  j ƒ  } |  j  j ƒ  } d | | d k <|  j  j ƒ  } d | | d k <t | | ƒ |  j  | d k } |  j  |  j  d k } t | | ƒ d  S(   Ni    (   R   t   sort_valuesR*   R	   (   R   t   orderedR*   R   t   selt   exp(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt$   test_get_set_boolean_different_order}   s    c         C   ss   t  t j d ƒ d |  ƒ} | d k  } t d d ƒ | | <t  t d d ƒ t d d ƒ d |  ƒ} t | | ƒ d  S(   Ni
   R   i   i   i   (   R   R   t   arangeR    R	   (   t
   sint_dtypeR   R   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_unsafe_int   s
    (c         C   ss   t  t j d ƒ d |  ƒ} | d k  } t d d ƒ | | <t  t d d ƒ t d d ƒ d |  ƒ} t | | ƒ d  S(   Ni
   R   i   i   i   (   R   R   R=   R    R	   (   t   float_dtypeR   R   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_unsafe_float™   s
    (s   dtype,expected_dtypec         C   sv   t  t j d ƒ d |  ƒ} d d d d d g } | d k  } t  | t d d ƒ d | ƒ} | | | <t | | ƒ d  S(	   Ni
   R   g      @g      @g      @g      @g      @i   (   R   R   R=   R    R	   (   R   t   expected_dtypeR   t   valuesR   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_unsafe_upcast£   s    

c       	   C   só  t  t j d ƒ d d ƒ}  d d d d g } |  d k } t  t d	 ƒ | d d
 ƒ} | |  | <t |  | ƒ t  t j d ƒ d d ƒ}  |  d k  } t d d ƒ |  | <t  t d d ƒ t d d ƒ d d ƒ} t |  | ƒ |  j | j k só t ‚ t  t j d ƒ d d ƒ}  |  d k } d g d |  | <t  d d d d d d g d g d d d ƒ} t |  | ƒ t  t j d ƒ ƒ }  |  d k } d } t j t	 d | ƒ d d d d d g |  | <Wd  QXt j t	 d | ƒ d g d |  | <Wd  QXt  d d d d g ƒ }  |  j
 |  d k t j ƒ } t  t j t j d d g ƒ } t | | ƒ t  t d ƒ ƒ j t ƒ }  d  |  d <|  d } t | ƒ st ‚ t  t d ƒ ƒ j t ƒ }  d  |  |  d k <|  t |  ƒ } t  t j d d g ƒ} t | | ƒ d  S(   Ni
   R   R   g      @g      @g      @g      @i   i   t   float64i   i   i    i   i   i   s-   cannot assign mismatch length to masked arrayR   i   R   i	   (   R   R   R=   R    R	   R   R    R#   R$   R+   t   whereR!   R   R)   t   floatt   NoneR   (   R   RC   R   R   R'   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_unsafeµ   sJ    
(/

c       	   C   sz   t  t j j d ƒ ƒ }  |  d k } t j t ƒ  |  j | d t ƒWd  QXt j t ƒ  |  j	 | d t ƒWd  QXd  S(   Ni   i    t   raise_on_error(
   R   R   t   randomt   randnR   t   assert_produces_warningt   FutureWarningRF   R&   R   (   R   t   cond(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt%   test_where_raise_on_error_deprecationì   s    c          C   sk  t  t j j d ƒ ƒ }  |  d k } |  j | ƒ j ƒ  } |  | } t | | ƒ |  j | |  ƒ } t | |  j ƒ  ƒ |  j | ƒ } |  j | j k s t	 ‚ | |  k	 s¯ t	 ‚ t  t
 t t t
 t g d |  j ƒ} |  j ƒ  } | | j | j d  ƒ j | j ƒ } | j | d  ƒ } t | | ƒ | j ƒ  } | d | j d <| j | d  | ƒ } t | | ƒ d  S(   Ni   i    R   i   (   R   R   RK   RL   RF   t   dropnaR	   t   abst   shapeR    R&   t   FalseR   t   reindext   iloc(   R   RO   t   rst   rs2R-   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt
   test_where÷   s&    
$&c          C   s?  t  t j j d ƒ ƒ }  |  d k } d } t j t d | ƒ |  j d ƒ Wd  QXt j t d | ƒ |  j | d  j |  ƒ Wd  QXt  d d g ƒ }  d d g |  t	 t
 g <t  d d g ƒ } t |  | ƒ d } t j t d | ƒ d d d g |  t	 t
 g <Wd  QXd	 } t j t d | ƒ g  |  t	 t
 g <Wd  QXd  S(
   Ni   i    s,   Array conditional must be same shape as selfR   i   i   i   s-   cannot assign mismatch length to masked arraysr   NumPy boolean array indexing assignment cannot assign 0 input values to the 1 output values where the mask is true(   R   R   RK   RL   R#   R$   R+   RF   RC   R&   RT   R	   (   R   RO   R'   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_error  s"    t   klassc         C   sb   t  d d d g ƒ } t t t g } t  t j d d g ƒ } | j |  | ƒ ƒ } t | | ƒ d  S(   Ni   i   i   (   R   RT   R&   R   R!   RF   R	   (   R[   R   RO   R   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_array_like.  s
    RO   i   i    i   i   i   R&   RT   s
   2017-01-01s
   2017-01-02c         C   sz   t  d d d g ƒ } d } t j t d | ƒ | j |  ƒ Wd  QXd } t j t d | ƒ | j t g ƒ Wd  QXd  S(   Ni   i   i   s(   Boolean array expected for the conditionR   s,   Array conditional must be same shape as self(   R   R#   R$   R+   RF   R&   (   RO   R   R'   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_invalid_input9  s    c          C   s  d }  t  d d d g ƒ } t g } t j t d |  ƒ | j | ƒ Wd  QXt  d t j t j g ƒ } | j t  | ƒ ƒ } t j	 | | ƒ t j
 t t t t g ƒ } t j t d |  ƒ | j | ƒ Wd  QXt  t j d t j g ƒ } | j t  | ƒ ƒ } t j	 | | ƒ d  S(   Ns,   Array conditional must be same shape as selfi   i   i   R   (   R   R&   R#   R$   R+   RF   R   R!   R   R	   t   arrayRT   (   R'   R   RO   R   t   out(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_ndframe_alignL  s    	c          C   sæ  d }  t  t d ƒ ƒ } t j t d |  j d ƒ ƒ t t d ƒ ƒ | d d +Wd  QXt t d ƒ ƒ | d d +t  d d d	 g ƒ } t | j t	 j
 ƒ | ƒ t  t d
 ƒ ƒ } t j t d |  j d ƒ ƒ$ t t d ƒ ƒ | d d d	 … <Wd  QXt  t d
 ƒ ƒ } t t d	 ƒ ƒ | d d d	 … <t  d d d d d d g ƒ } t | | ƒ t  t d
 ƒ ƒ } t j t d |  j d ƒ ƒ t t d ƒ ƒ | d *Wd  QXt t d	 ƒ ƒ | d d +t  d d d d d d g ƒ } t | | ƒ t  t d ƒ ƒ } t j t d |  j d ƒ ƒ$ t t d ƒ ƒ | d d d	 g <Wd  QXt  t d ƒ ƒ } t j t d |  j d ƒ ƒ$ t t d	 ƒ ƒ | d d d	 g <Wd  QXt  t d ƒ ƒ } t t d ƒ ƒ | d <t  t t d ƒ ƒ d d g ƒ } t | | ƒ d  S(   NsD   cannot set using a {} indexer with a different length than the valuet   abcR   t   slicei   i    i   i   i   t   abcdefi   t   bt   dt   et   fiÿÿÿÿiýÿÿÿt   at   cs	   list-likei
   (   R   R   R#   R$   R+   t   formatR   R	   R)   R   R   (   R'   R   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_setitem_invalidc  s<    %%%!t   sizei   R   t   itemg       @t   boxc         C   s   t  j |  g ƒ S(   N(   R   R^   (   t   x(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   <lambda>§  s    c         C   s   |  g S(   N(    (   Ro   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyRp   ¨  s    c         C   s   |  f S(   N(    (   Ro   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyRp   ©  s    c         C   sò   t  j | |  ƒ } t  j |  d t ƒ} t g  t | ƒ D]" \ } } | rO | n | | ^ q7 ƒ } t | ƒ }	 | | ƒ |	 | <t |	 | ƒ t | ƒ }	 |	 j | | | ƒ ƒ }
 t |
 | ƒ t | ƒ }	 |	 j | | | ƒ ƒ }
 t |
 | ƒ d  S(   NR   (	   R   t   resizeR=   RG   R   t	   enumerateR	   RF   R   (   Rl   R   Rm   Rn   t	   selectiont   datat   it   use_itemR   R   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_broadcast›  s    5c          C   s±   t  t j j d ƒ ƒ }  |  d k } |  j ƒ  } | j | d t ƒt | j ƒ  |  | ƒ t | |  j | ƒ ƒ |  j ƒ  } | j | |  d t ƒt | |  j | |  ƒ ƒ d  S(   Ni   i    t   inplace(	   R   R   RK   RL   R*   RF   R&   R	   RQ   (   R   RO   RW   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_inplaceÂ  s    c       	   C   sS  t  t t d ƒ ƒ ƒ }  t  t t d ƒ ƒ ƒ } t j |  | g ƒ } | j | d k  ƒ } t  d d t j d d t j g d d d d d d d g ƒ} t | | ƒ d | | d k  <t  d d d d d d g d d d d d d d g ƒ} t | | ƒ | | d k  c d 7<t  d d d d d d g d d d d d d d g ƒ} t | | ƒ d  S(	   Ni   i   i    i   R   i   i
   i   (	   R   R   R   t   pdt   concatRF   R   R!   R	   (   t   s1R-   t   combR   R   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_dupsÑ  s    !66c          C   sÒ  t  j d d d g ƒ }  |  j |  d k d ƒ } t | d ƒ sG t ‚ t | d ƒ s] t ‚ t | d ƒ ss t ‚ t | d t ƒ sŒ t ‚ | j d k s¡ t ‚ |  j |  d k d d d g ƒ } t | d ƒ sÙ t ‚ t | d ƒ sï t ‚ t | d ƒ st ‚ t | d t ƒ st ‚ | j d k s3t ‚ |  j |  d k t j	 d d d g ƒ ƒ } t | d ƒ stt ‚ t | d ƒ sŠt ‚ t | d ƒ s t ‚ t | d t ƒ s¹t ‚ | j d k sÎt ‚ d  S(	   Ni   i   i   t   Xi    R"   t   Yt   Z(
   Rz   R   RF   R   R    t
   isinstancet   strR   R   R^   (   R   t   w(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_numeric_with_stringç  s&    !*c          C   s  t  d d g d d ƒ}  t  d d g ƒ } t j t t g ƒ } |  j | d d g ƒ } t | | ƒ |  j | d ƒ } t | | ƒ |  j | d ƒ } t | | ƒ |  j | d d g ƒ } t | | ƒ |  j | d t j g ƒ } t  d d  g d d ƒ} t | | ƒ d  S(   Ni   i   R   s   timedelta64[ns]i
   g      $@R"   (   R   R   R^   RT   RF   R	   R!   RH   (   R   R   R   RW   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_timedelta_coerce  s    c          C   s€  t  t d d d ƒƒ }  t  d d g ƒ } t j t t g ƒ } |  j | d d g ƒ } t | | ƒ |  j | d ƒ } t | | ƒ |  j | d ƒ } t | | ƒ |  j | d d g ƒ } t | | ƒ |  j | d t j g ƒ } t  d d  g d d ƒ} t | | ƒ d d	 g } t  g  | D] } t	 j
 | ƒ ^ qƒ }  |  j t  t t g ƒ ƒ } t  t	 j |  d
 g ƒ } t | | ƒ d  S(   Nt   20130102t   periodsi   i
   g      $@R   R"   s   2016-12-31 12:00:04+00:00s    2016-12-31 12:00:04.010000+00:00i   (   R   R   R   R^   RT   RF   R	   R!   RH   Rz   R   R&   t   NaT(   R   R   R   RW   t
   timestampst   t(    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_datetime_conversion  s(    	(c         C   s°   t  j t  j d d d g d |  ƒƒ } t  j t  j d d d g d |  ƒƒ } t  j t t t g ƒ } | j | | ƒ } t  j t  j d d d g d |  ƒƒ } t | | ƒ d  S(   Nt   20150101t   20150102t   20150103t   tzt   20160514t   20160515t   20160516(   Rz   R   t   DatetimeIndexR&   RT   RF   R	   (   t   tz_naive_fixturet   ser1t   ser2R   R   R;   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_where_dt_tz_values5  s    c    
      C   sb  t  t j j d ƒ ƒ }  |  d k } |  j | t j ƒ } t | |  j | ƒ ƒ |  j | ƒ } |  j | ƒ } t | | ƒ |  j | |  ƒ } |  j | |  ƒ } t | | ƒ t  t t	 t	 t t	 g d |  j
 ƒ} |  j ƒ  } | j | d  ƒ } | j | d  ƒ } t | | ƒ | j | d  | ƒ } | j | d  | ƒ } t | | ƒ d } t j t d | ƒ |  j d ƒ Wd  QXt j t d | ƒ |  j | d  j |  ƒ Wd  QXt  d d d d	 g ƒ }  |  j |  d k t j ƒ } t  d d t j t j g ƒ } t | | ƒ t  d d g ƒ }  |  j t t	 g ƒ } t  t j d g ƒ }	 t j | |	 ƒ d  S(
   Ni   i    R   i   s,   Array conditional must be same shape as selfR   i   i   i   (   R   R   RK   RL   RF   R!   R	   R   R&   RT   R   RR   R#   R$   R+   RC   R   (
   R   RO   RW   RX   R-   R'   R   R   t   resR;   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt	   test_maskA  s>    $c          C   s²   t  t j j d ƒ ƒ }  |  d k } |  j ƒ  } | j | d t ƒt | j ƒ  |  | ƒ t | |  j | ƒ ƒ |  j ƒ  } | j | |  d t ƒt | |  j | |  ƒ ƒ d  S(   Ni   i    Rx   (	   R   R   RK   RL   R*   R   R&   R	   RQ   (   R   RO   RW   (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   test_mask_inplaceo  s    (E   t   numpyR   R#   t   pandas.compatR    R   t   pandas.core.dtypes.commonR   t   pandasRz   R   R   R   R   R   t   pandas.core.indexingR   t   pandas.util.testingt   utilt   testingR   R	   t   pandas.tseries.offsetsR
   R   R(   R/   R5   R7   R<   R?   RA   t   markt   parametrizet   int8RE   t   int16t   int32R   t   float32RD   RI   RP   RY   RZ   R   t   tupleR^   R\   R‰   R]   R`   Rk   R&   RT   R!   t   finfoRG   t   maxt   minRw   Ry   R~   R…   R†   RŒ   R˜   Rš   R›   (    (    (    sH   lib/python2.7/site-packages/pandas/tests/series/indexing/test_boolean.pyt   <module>   sn   (							
	
!	7			--		8	3!							.