ó
šxŠ\c           @   sj   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d d l m	 Z	 d e	 f d „  ƒ  YZ
 d S(   iÿÿÿÿN(   t   ExtensionBlocki   (   t   BaseExtensionTestst   BaseReshapingTestsc           B   sµ  e  Z d  Z e j j d e e g ƒ d „  ƒ Z e j j d e e g ƒ d „  ƒ Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z e j j d d d g e j j d! d" g d d d g ƒg ƒ d „  ƒ Z e j j d e j j d d g d d g g d d d g ƒe j j d# d$ d% g ƒ e j j d& d' d( g ƒ e j j d) d* d+ d, d- g ƒ g ƒ e j j d d d g ƒ d  „  ƒ ƒ Z RS(.   s&   Tests for reshaping and concatenation.t   in_framec         C   s»   t  j | ƒ } | r' t  j | ƒ } n  t  j | | g d t ƒ} t | ƒ t | ƒ d k sd t ‚ | rz | j d } n	 | j } | | j k s˜ t ‚ t	 | j
 j d t ƒ s· t ‚ d  S(   Nt   ignore_indexi   i    (   t   pdt   Seriest	   DataFramet   concatt   Truet   lent   AssertionErrort   dtypest   dtypet
   isinstancet   _datat   blocksR    (   t   selft   dataR   t   wrappedt   resultR   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_concat   s    "	c         C   s  t  j | j d d g ƒ d d d g ƒ} t  j | j d d g ƒ d d d g ƒ} | r‰ t  j i | d 6ƒ } t  j i | d 6ƒ } n  t  j | | g ƒ } | râ t  j i | j d d d d g ƒ d 6ƒ } |  j | | ƒ n4 t  j | j d d d d g ƒ ƒ } |  j | | ƒ d  S(   Ni   t   indexi    i   i   t   a(   R   R   t   takeR   R   t   assert_frame_equalt   assert_series_equal(   R   t   data_missingR   t   valid_blockt   na_blockR   t   expected(    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_concat_all_na_block   s    **+$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 t ƒ ^ qŒ ƒ } |  j | | ƒ t  j g  | D] } | d ^ qÇ ƒ } t  j g  | D] } | d j t ƒ ^ qí ƒ } |  j | | ƒ t  j | | g ƒ } t  j | j d	 ƒ | j d	 ƒ g ƒ } |  j | | ƒ t  j | d | d g ƒ } t  j | d j d	 ƒ | d j d	 ƒ g ƒ } |  j | | ƒ d  S(
   Ni   t   Ai   i   R   t   bt   ct   categoryt   object(   R   R   t   astypeR   R$   R   R   (	   R   R   t   df1t   df2t   df3t   dfsR   t   xR   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_concat_mixed_dtypes.   s"    (+&/'c         C   s   t  j i | d  d 6ƒ } t  j i d d d g d 6ƒ } t  j i | d  d 6d d d g d 6ƒ } t  j | | g d d ƒ} |  j | | ƒ t  j | d | d g d d ƒ} |  j | | ƒ t  j i d d d g d 6d d d d g ƒ} t  j i | j t | d  ƒ | g d | j ƒd 6t j d d d g d 6ƒ } t  j | | g d d ƒ} |  j | | ƒ t  j | d | d g d d ƒ} |  j | | ƒ d  S(	   Ni   R    i   i   t   Bt   axisR   R   (	   R   R   R   R   t   _from_sequencet   listR   t   npt   nan(   R   R   t   na_valueR&   R'   R   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_concat_columnsI   s     *#.	#c   	      C   sÍ   | d  } | d d !} t  j | ƒ j t  j | d d d d g ƒƒ \ } } t  j | j t | ƒ | g d | j ƒƒ } t  j | j | g t | ƒ d | j ƒƒ } |  j | | ƒ |  j | | ƒ d  S(   Ni   i   i   R   i   R   (   R   R   t   alignR.   R/   R   R   (	   R   R   R2   R   R!   t   r1t   r2t   e1t   e2(    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt
   test_align_   s    
6c   	      C   sé   | d  } | d d !} t  j i | d 6ƒ j t  j i | d 6d d d d g ƒƒ \ } } t  j i | j t | ƒ | g d | j ƒd 6ƒ } t  j i | j | g t | ƒ d | j ƒd 6ƒ } |  j | | ƒ |  j | | ƒ d  S(   Ni   i   i   R    R   i   R   (   R   R   R4   R.   R/   R   R   (	   R   R   R2   R   R!   R5   R6   R7   R8   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_align_framel   s    
.""c         C   s®   t  j | d d ƒ} t  j i t j t | ƒ d ƒ d 6ƒ } | j | ƒ \ } } t  j | j t | ƒ | g d | j	 ƒd | j
 ƒ} |  j | | ƒ |  j | | ƒ d  S(   Nt   nameR   i   t   colR   (   R   R   R   R0   t   arangeR
   R4   R.   R/   R   R;   R   R   (   R   R   R2   t   sert   dfR5   R6   R7   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_align_series_frame{   s    )c         C   sk   t  j i d g t | ƒ d 6ƒ } | | d <t  j i d g t | ƒ d 6| d 6ƒ } |  j | | ƒ d  S(   Ni   R    R,   (   R   R   R
   R   (   R   R   R?   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt,   test_set_frame_expand_regular_with_extensionˆ   s    #
*c         C   sk   t  j i | d 6ƒ } d g t | ƒ | d <t  j i | d 6d g t | ƒ d 6ƒ } |  j | | ƒ d  S(   NR    i   R,   (   R   R   R
   R   (   R   R   R?   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt,   test_set_frame_expand_extension_with_regularŽ   s    *c         C   sS   t  j i d g t | ƒ d 6d t ƒ} | | d <| j d | j k sO t ‚ d  S(   Ni   R    R   (   R   R   R
   R$   R   R   R   (   R   R   R?   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_set_frame_overwrite_object”   s    )
c         C   sÙ  t  j i | d  d 6d d d g d 6d d d g d 6ƒ } t  j i d d d d g d	 6d d d d g d 6ƒ } t  j | | ƒ } t  j i d d d g d 6d d d g d	 6d d d g d 6| j | d | d | d g d
 | j ƒd 6ƒ } |  j | | d d d d	 g ƒ t  j | | d d ƒ} t  j i d d d d t j g d 6d d d t j d g d	 6d d d d d g d 6| j | d | d | d | d | g d
 | j ƒd 6ƒ } |  j | | d d d d	 g ƒ d  S(   Ni   t   exti   i   t   int1i    t   keyi   t   int2R   t   howt   outer(   R   R   t   mergeR.   R   R   R0   R1   (   R   R   R2   R&   R'   t   rest   exp(    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt
   test_mergeš   s"    $53! 5%c         C   s  | d  \ } } t  | ƒ j | | g d | j ƒ} t j i | d 6d d g d 6ƒ } t j | | d d ƒ} t j i | d 6d d g d 6d d g d 6ƒ } |  j | | ƒ t j | j d d	 g | d d ƒ} | j d d	 g j d
 t	 ƒ } |  j | | ƒ d  S(   Ni   R   RF   i   t   valt   ont   val_xt   val_yi    t   drop(
   t   typeR.   R   R   R   RJ   R   t   iloct   reset_indexR	   (   R   R   R   R!   RF   R?   R   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_merge_on_extension_array°   s    $#%c   	      C   s	  | d  \ } } t  | ƒ j | | | g d | j ƒ} t j i | d 6d d d g d 6ƒ } t j i | d 6d d d g d 6ƒ } t j | | d d ƒ} t j i | j d d d d d g ƒ d 6d d d d d g d	 6d d d d d g d
 6ƒ } |  j | | ƒ d  S(   Ni   R   RF   i   i   RN   RO   i    RP   RQ   (   RS   R.   R   R   R   RJ   R   R   (	   R   R   R   R!   RF   R&   R'   R   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt(   test_merge_on_extension_array_duplicatesÁ   s    '&&	t   columnsR    R,   R   R!   t   namesRI   t   innerc         C   sò   t  j i | d  d 6| d  d 6ƒ } | | _ | j ƒ  } | j t ƒ j ƒ  } | j t ƒ } t | t  j ƒ rž | j | j	 d  d  … d f j k sÏ t
 ‚ n1 t | j | j	 d  d  … d f j k ƒ sÏ t
 ‚ | j t ƒ } |  j | | ƒ d  S(   Ni   R    R,   i    (   R   R   RX   t   stackR%   R$   R   R   R   RT   R   t   allR   t   assert_equal(   R   R   RX   R?   R   R   (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt
   test_stackÐ   s    %	.1R   R"   i    i   i   t   objt   seriest   framec   	         s&  ˆ  t  | ƒ  ‰  | d k r4 t j ˆ  d | ƒ} n# t j i ˆ  d 6ˆ  d 6d | ƒ} | j } t t | ƒ ƒ ‰ t j j	 ‡ f d †  t d | ƒ Dƒ ƒ } x‚ | D]z } | j
 d | ƒ ‰ t ‡  ‡ f d †  ˆ j Dƒ ƒ sä t ‚ | j t ƒ j
 d | ƒ } ˆ j t ƒ ‰ |  j ˆ | ƒ q¤ Wd  S(	   NR`   R   R    R,   c         3   s!   |  ] } t  j ˆ  | ƒ Vq d  S(   N(   t	   itertoolst   permutations(   t   .0t   i(   t   levels(    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pys	   <genexpr>  s    i   t   levelc         3   s+   |  ]! } t  ˆ | j t ˆ  ƒ ƒ Vq d  S(   N(   R   t   arrayRS   (   Rd   R<   (   R   R   (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pys	   <genexpr>
  s   (   R
   R   R   R   t   nlevelsR/   t   rangeRb   t   chaint   from_iterablet   unstackR\   RX   R   R%   R$   R   (	   R   R   R   R_   R>   t   nt   combinationsRg   R   (    (   R   Rf   R   sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   test_unstackæ   s    #		"(   R    R   (   R    R!   (   R    R   (   R    R!   (   R,   R!   (   R    R,   (   R   R!   R"   (   i    i   i   (   R    R   i   (   R    R!   i    (   R    R   i    (   R,   R   i    (   R,   R"   i   (   t   __name__t
   __module__t   __doc__t   pytestt   markt   parametrizeR	   t   FalseR   R   R+   R3   R9   R:   R@   RA   RB   RC   RM   RV   RW   R   t
   MultiIndext   from_tuplesR^   t   from_productRp   (    (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyR      s<   $$												!	(   Rb   t   numpyR0   Rt   t   pandasR   t   pandas.core.internalsR    t   baseR   R   (    (    (    sD   lib/python2.7/site-packages/pandas/tests/extension/base/reshaping.pyt   <module>   s   