ó
šxŠ\c           @   sí  d  d l  Z d  d l Z d  d l m Z d  d l Z d  d l m Z m Z d  d l	 m
 Z
 d  d l j j Z d „  Z e j d „  ƒ Z e j d d e j g ƒ d	 „  ƒ Z e j d d e j g ƒ d
 „  ƒ Z e j d d e j g ƒ d „  ƒ Z e j d d e j g ƒ d „  ƒ Z e j d d e j g ƒ d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d d e j g ƒ d „  ƒ Z d e f d „  ƒ  YZ d e e
 j f d „  ƒ  YZ d e e
 j f d „  ƒ  YZ  d e e
 j! f d „  ƒ  YZ" d e e
 j# f d „  ƒ  YZ$ d e e
 j% f d „  ƒ  YZ& d e e
 j' f d „  ƒ  YZ( d e e
 j) f d  „  ƒ  YZ* d! e e
 j+ f d" „  ƒ  YZ, d# e e
 j- f d$ „  ƒ  YZ. d% e e
 j/ f d& „  ƒ  YZ0 d' e e
 j1 f d( „  ƒ  YZ2 d) e e
 j3 f d* „  ƒ  YZ4 d S(+   iÿÿÿÿN(   t   PerformanceWarning(   t   SparseArrayt   SparseDtype(   t   basec         C   s€   t  j |  ƒ r' t  j j d d ƒ } nB t  j j d d d d ƒ} | d | d k ri | d c d 7<n  |  | d d  d … <| S(   Nt   sizeid   i   i    i   i   (   t   npt   isnant   randomt   uniformt   randint(   t
   fill_valuet   data(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt	   make_data   s    c           C   s   t  ƒ  S(   N(   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   dtype   s    t   paramsi    c         C   s"   t  t |  j ƒ d |  j ƒ} | S(   s*   Length-100 PeriodArray for semantics test.R
   (   R   R   t   param(   t   requestt   res(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR      s    c         C   s   t  t j d g d |  j ƒS(   s   Length 2 array with [NA, Valid]i   R
   (   R   R   t   nanR   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   data_missing%   s    c         #   s   ‡  f d †  } | Vd S(   s1   Return different versions of data for count timesc         3   s8   x1 t  |  ƒ D]# } t t ˆ  j ƒ d ˆ  j ƒVq Wd  S(   NR
   (   t   rangeR   R   R   (   t   countt   _(   R   (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   gen.   s    N(    (   R   R   (    (   R   sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   data_repeated+   s    c         C   s   t  d d d g d |  j ƒS(   Ni   i   i   R
   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   data_for_sorting5   s    c         C   s   t  d t j d g d |  j ƒS(   Ni   i   R
   (   R   R   R   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   data_missing_for_sorting:   s    c           C   s   t  j S(   N(   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   na_value?   s    c           C   s   d „  S(   Nc         S   s   t  j |  ƒ o t  j | ƒ S(   N(   t   pdt   isna(   t   leftt   right(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   <lambda>F   s    (    (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   na_cmpD   s    c      	   C   s1   t  d d t j t j d d d d g d |  j ƒS(   Ni   i   i   R
   (   R   R   R   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   data_for_groupingI   s    't   BaseSparseTestsc           B   s   e  Z d  „  Z RS(   c         C   s,   | j  t t d ƒ k r( t j d ƒ n  d  S(   Ni    s   Can't store nan in int array.(   R   R   t   intt   pytestt   skip(   t   selfR   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   _check_unsupportedQ   s    (   t   __name__t
   __module__R(   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR#   O   s   t	   TestDtypec           B   s   e  Z d  „  Z RS(   c         C   s   | j  ƒ  t k s t ‚ d  S(   N(   t   construct_array_typeR   t   AssertionError(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_array_type_with_argX   s    (   R)   R*   R.   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR+   V   s   t   TestInterfacec           B   s   e  Z d  „  Z RS(   c         C   s   t  j d ƒ d  S(   Ns   We have values(   R%   R&   (   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_no_values_attribute]   s    (   R)   R*   R0   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR/   \   s   t   TestConstructorsc           B   s   e  Z RS(    (   R)   R*   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR1   a   s   t   TestReshapingc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c   	      C   sÁ   t  j i | d  d 6ƒ } t  j i d d d g d 6ƒ } t  j i d d d g d 6ƒ j d ƒ } | | | g } t  j | ƒ } t  j g  | D] } | j d	 „  ƒ ^ qŒ ƒ } |  j | | ƒ d  S(
   Ni   t   Ai   i   t   at   bt   ct   categoryc         S   s   t  j |  ƒ j t ƒ S(   N(   R   t   asarrayt   astypet   object(   t   s(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR    q   s    (   R   t	   DataFrameR9   t   concatt   applyt   assert_frame_equal(	   R'   R   t   df1t   df2t   df3t   dfst   resultt   xt   expected(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_concat_mixed_dtypesg   s    (	%c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R(   t   superR2   t   test_concat_columns(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRI   u   s    c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R(   RH   R2   t
   test_align(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRJ   y   s    c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R(   RH   R2   t   test_align_frame(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRK   }   s    c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R(   RH   R2   t   test_align_series_frame(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRL      s    c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R(   RH   R2   t
   test_merge(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRM   …   s    (   R)   R*   RG   RI   RJ   RK   RL   RM   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR2   e   s   					t   TestGetitemc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sÌ   t  j | d g  t t | ƒ ƒ D] } d | ^ q ƒ} t j | j j ƒ r„ t j | j d ƒ ƒ r{ t j | j	 d ƒ s¦ t
 ‚ n" | j d ƒ | j	 d k s¦ t
 ‚ | j d ƒ | j	 d k sÈ t
 ‚ d  S(   Nt   indexi   i   i   (   R   t   SeriesR   t   lenR   R   t   valuesR
   t   gett   ilocR-   (   R'   R   t   iR;   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_getŒ   s
    87"c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R(   RH   RN   t   test_reindex(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRW   ”   s    (   R)   R*   RV   RW   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRN   Š   s   	t   TestMissingc           B   sS   e  Z d  „  Z d „  Z d „  Z d „  Z e j j d d ƒ d „  ƒ Z	 d „  Z
 RS(   c         C   sÖ   t  t t j | j j ƒ ƒ } t t t g d | ƒ} t j | ƒ } |  j	 | | ƒ t j
 | ƒ j ƒ  } t j
 | ƒ } |  j | | ƒ t j
 | ƒ j d d g ƒ j ƒ  } t j
 g  d | ƒ} |  j | | ƒ d  S(   NR   i    i   (   R   t   boolR   R   R   R
   R   t   Truet   Falset   assert_equalRP   t   assert_series_equalt   drop(   R'   R   t   expected_dtypeRF   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt	   test_isna   s    $c         C   s0   t  j t ƒ  t t |  ƒ j | ƒ Wd  QXd  S(   N(   t   tmt   assert_produces_warningR    RH   RX   t   test_fillna_limit_pad(   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRc   ®   s    c         C   s0   t  j t ƒ  t t |  ƒ j | ƒ Wd  QXd  S(   N(   Ra   Rb   R    RH   RX   t   test_fillna_limit_backfill(   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRd   ²   s    c         C   s0   t  j t ƒ  t t |  ƒ j | ƒ Wd  QXd  S(   N(   Ra   Rb   R    RH   RX   Rd   (   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_fillna_series_method¶   s    t   reasont   Unsupportedc         C   s   d  S(   N(    (   R'   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_fillna_seriesº   s    c         C   s²   | d } t  j i | d 6d d g d 6ƒ j | ƒ } t  j | j ƒ r] t | j | ƒ } n	 | j } t  j i | j | | g d | ƒd 6d d g d 6ƒ } |  j | | ƒ d  S(   Ni   R3   i   t   BR   (	   R   R<   t   fillnaR   R
   R   R   t   _from_sequenceR?   (   R'   R   R
   RD   R   RF   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_fillna_frame¿   s    
				
(   R)   R*   R`   Rc   Rd   Re   R%   t   markR&   Rh   Rl   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRX   ›   s   				t   TestMethodsc           B   sw   e  Z d  „  Z d „  Z d „  Z e j j d d ƒ d „  ƒ Z d „  Z	 d „  Z
 e j j d e e g ƒ d	 „  ƒ Z RS(
   c         C   s  | d ƒ \ } } t  j | ƒ } t  j | ƒ } | j | d „  ƒ } t  j t  j g  t t | ƒ t | ƒ ƒ D] \ } } | | k ^ qm d t ƒƒ }	 |  j | |	 ƒ | j d }
 | j |
 d „  ƒ } t  j t  j g  t | ƒ D] } | |
 k ^ qâ d t ƒƒ }	 |  j | |	 ƒ d  S(   Ni   c         S   s
   |  | k S(   N(    (   t   x1t   x2(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR    ß   s    R
   i    c         S   s
   |  | k S(   N(    (   Ro   Rp   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR    ç   s    (	   R   RP   t   combineR   t   zipt   listR[   R]   RT   (   R'   R   t
   orig_data1t
   orig_data2t   s1t   s2RD   R4   R5   RF   t   val(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_combine_leØ   s    7%c         C   s   | j  d d g ƒ } t j i | d 6ƒ } | j d } | j | ƒ } | j j | j j k	 se t ‚ | j j	 j
 ƒ  | j
 ƒ  k s‰ t ‚ d  S(   Ni   R3   i    (   i    i    (   t   takeR   R<   RT   Rj   RR   R   R-   R3   t   _valuest   to_dense(   R'   R   t   arrt   dft
   filled_valRD   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_fillna_copy_frameí   s    c         C   sz   | j  d d g ƒ } t j | ƒ } | d } | j | ƒ } | j | j k	 sU t ‚ | j j ƒ  | j ƒ  k sv t ‚ d  S(   Ni   i    (   Rz   R   RP   Rj   R{   R-   R|   (   R'   R   R}   t   serR   RD   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_fillna_copy_series÷   s    
Rf   s   Not Applicablec         C   s   d  S(   N(    (   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_fillna_length_mismatch  s    c         C   sh  | d | d k s t  ‚ t | ƒ } | d  \ } } t j | j | | | | g d | j ƒƒ } t j t t t	 t	 g ƒ } | j
 | ƒ } t d d ƒ }	 t j | j | | | | g d |	 ƒƒ }
 |  j | |
 ƒ | j | | | | g d | j ƒ} t j t t	 t t g ƒ } | j
 | | ƒ } t j | j | | | | g d | j ƒƒ }
 |  j | |
 ƒ d  S(   Ni    i   i   R   t   floatg        (   R-   t   typeR   RP   Rk   R   R   t   arrayRZ   R[   t   whereR   R]   (   R'   R   R   t   clsR4   R5   R   t   condRD   t	   new_dtypeRF   t   other(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   test_where_series  s     -$c         C   s<   | j  j d k r" t j d ƒ n  t t |  ƒ j | ƒ d  S(   NR$   s1   TODO(SparseArray.__setitem__ will preserve dtype.(   R   t   subtypeR%   R&   RH   Rn   t   test_combine_first(   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRŽ     s    t	   as_seriesc         C   s6   t  j t ƒ ! t t |  ƒ j | d | ƒWd  QXd  S(   NR   (   Ra   Rb   R    RH   Rn   t   test_searchsorted(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR   "  s    (   R)   R*   Ry   R€   R‚   R%   Rm   R&   Rƒ   RŒ   RŽ   t   parametrizeRZ   R[   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRn   Ö   s   		
	
		t   TestCastingc           B   s   e  Z RS(    (   R)   R*   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR’   )  s   t   TestArithmeticOpsc           B   sD   e  Z d Z d Z d Z d Z d  „  Z d „  Z d „  Z	 d „  Z
 RS(   c         C   s%   | j  d k r! t j d ƒ ‚ n  d  S(   Ni    s(   Incorrected expected from Series.combine(   R
   R%   R&   (   R'   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   _skip_if_different_combine3  s    c         C   s   d  S(   N(    (   R'   R   t   all_arithmetic_operators(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt
   test_error:  s    c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R”   RH   R“   t   test_arith_series_with_scalar(   R'   R   R•   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR—   =  s    c         C   s*   |  j  | ƒ t t |  ƒ j | | ƒ d  S(   N(   R”   RH   R“   t   test_arith_series_with_array(   R'   R   R•   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR˜   D  s    N(   R)   R*   t   Nonet   series_scalar_exct   frame_scalar_exct
   divmod_exct   series_array_excR”   R–   R—   R˜   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR“   -  s   			t   TestComparisonOpsc           B   s   e  Z d  „  Z RS(   c      
   C   sú   |  j  | ƒ } t j | | | ƒ ƒ } t | j t ƒ s? t ‚ | j j t j d ƒ k s` t ‚ t j	 d d ƒ D t j t j
 | t j | ƒ t j | ƒ ƒ d | j j ƒƒ } Wd  QXt j | | ƒ t j | ƒ } | | | ƒ } t j | | ƒ d  S(   NRY   t   allt   ignoreR
   (   t   get_op_from_nameR   RP   t
   isinstanceR   R   R-   R   R   t   errstateR   R8   RR   R
   Ra   R]   (   R'   R;   R   t   op_nameR‹   t   opRD   RF   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   _compare_otherN  s    !'(   R)   R*   R¦   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyRž   L  s   t   TestPrintingc           B   s,   e  Z e j j d  d d e ƒ d „  ƒ Z RS(   Rf   s   Different reprt   strictc         C   s   t  t |  ƒ j | | ƒ d  S(   N(   RH   R§   t   test_array_repr(   R'   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR©   h  s    (   R)   R*   R%   Rm   t   xfailRZ   R©   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR§   g  s   t   TestParsingc           B   s,   e  Z e j j d  d d g ƒ d „  ƒ Z RS(   t   engineR6   t   pythonc         C   s?   d } t  j t d | ƒ t t |  ƒ j | | ƒ Wd  QXd  S(   Ns,   .*must implement _from_sequence_of_strings.*t   match(   R%   t   raisest   NotImplementedErrorRH   R«   t   test_EA_types(   R'   R¬   R   t   expected_msg(    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR±   n  s    (   R)   R*   R%   Rm   R‘   R±   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyR«   m  s   (5   t   numpyR   R%   t   pandas.errorsR    t   pandasR   R   R   t   pandas.tests.extensionR   t   pandas.util.testingt   utilt   testingRa   R   t   fixtureR   R   R   R   R   R   R   R   R!   R"   R:   R#   t   BaseDtypeTestsR+   t   BaseInterfaceTestsR/   t   BaseConstructorsTestsR1   t   BaseReshapingTestsR2   t   BaseGetitemTestsRN   t   BaseMissingTestsRX   t   BaseMethodsTestsRn   t   BaseCastingTestsR’   t   BaseArithmeticOpsTestsR“   t   BaseComparisonOpsTestsRž   t   BasePrintingTestsR§   t   BaseParsingTestsR«   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/extension/test_sparse.pyt   <module>   s:   	$$$
$$$%;S