B
    x\v                @   s  d dl m Z  d dlZd dlmZmZ d dlZd dlZd dlm	Z	m
Z
mZmZmZ d dlm  mZ d dlmZ d dlmZ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!  m"Z# d dl m$Z$ d dl%m  m&Z' d d	l%m(Z(m)Z)m*Z*m+Z+m,Z,m-Z.m/Z/ d d
l0m1Z1 d dl2m3Z3m4Z4 dd Z5ej67dG dd de8Z9ej67dG dd de8Z:ej67dG dd de8Z;ej67dG dd de8Z<ej67dG dd de9e<e:e;Z=ej67dG dd de8Z>dd Z?ej67ddd Z@dS )    )datetimeN)catch_warningssimplefilter)OrderedDictStringIOlrangerange	signature)is_float_dtype)	DataFrameIndex
MultiIndexSeriescompat
date_rangeisnanotna)nanallnanany)Panel)assert_almost_equalassert_frame_equalassert_panel_equalassert_series_equalensure_cleanmakeCustomDataframemakeMixedDataFrame)pprint_thing)BDayMonthEndc           	   C   s>   t dd* tdt t } t|  |  } W d Q R X | S )NT)recordignore)r   r   FutureWarningtm	makePanelZadd_nanscopy)Z_panel r&   6lib/python3.7/site-packages/pandas/tests/test_panel.pymake_test_panel   s    

r(   zignore:\nPanel:FutureWarningc               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 ZdS )

PanelTestsNc             C   s$   t | j}t|d | jd  d S )NItemA)r#   Zround_trip_picklepanelr   )selfZ	unpickledr&   r&   r'   test_pickle,   s    zPanelTests.test_picklec                s   t t fdd d S )Nc                  s
    j  S )N)r+   Zrankr&   )r,   r&   r'   <lambda>1   s    z&PanelTests.test_rank.<locals>.<lambda>)pytestraisesNotImplementedError)r,   r&   )r,   r'   	test_rank0   s    zPanelTests.test_rankc             C   s&   | j  }t|d | j d   d S )Nr*   )r+   cumsumr   )r,   r3   r&   r&   r'   test_cumsum3   s    
zPanelTests.test_cumsumc             C   s8   t  }t t dggg}ttt| ttt| d S )N   )r   r/   r0   	TypeErrorhash)r,   Zc_emptycr&   r&   r'   not_hashable7   s    zPanelTests.not_hashable)__name__
__module____qualname__r+   r-   r2   r4   r9   r&   r&   r&   r'   r)   (   s
   r)   c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jde
jddd Ze
jddd Ze
jddd Zejdd Zdd Zdd Zdd Zd#d!d"ZdS )$SafeForLongAndSparsec             C   s   t | j d S )N)reprr+   )r,   r&   r&   r'   	test_reprA   s    zSafeForLongAndSparse.test_reprc             C   sL   xFdD ]>}d t | j|_| j }dt ||_t | j|jd kstqW d S )N)
major_axis
minor_axisfoo)getattrr+   namer%   AssertionError)r,   attrcpr&   r&   r'   test_copy_namesD   s
    

z$SafeForLongAndSparse.test_copy_namesc             C   s   t t| j| jj d S )N)r#   equalContentslistr+   items)r,   r&   r&   r'   	test_iterK   s    zSafeForLongAndSparse.test_iterc             C   s    dd }| j d|| jdd d S )Nc             S   s   t |  S )N)r   sum)sr&   r&   r'   r.   O   s    z1SafeForLongAndSparse.test_count.<locals>.<lambda>countF)obj
has_skipna)_check_stat_opr+   )r,   fr&   r&   r'   
test_countN   s    zSafeForLongAndSparse.test_countc             C   s   | j dtjtjd d S )NrM   )skipna_alternative)rR   nprM   Znansum)r,   r&   r&   r'   test_sumR   s    zSafeForLongAndSparse.test_sumc             C   s   |  dtj d S )Nmean)rR   rV   rX   )r,   r&   r&   r'   	test_meanU   s    zSafeForLongAndSparse.test_meanc             C   s   | j dtjtjd d S )Nprod)rU   )rR   rV   rZ   Znanprod)r,   r&   r&   r'   	test_prodX   s    zSafeForLongAndSparse.test_prodz#ignore:Invalid value:RuntimeWarningzignore:All-NaN:RuntimeWarningc             C   s   dd }|  d| d S )Nc             S   s   t |  rtjS t| S )N)r   anyrV   nanmedian)xr&   r&   r'   wrapper^   s    z1SafeForLongAndSparse.test_median.<locals>.wrapperr^   )rR   )r,   r`   r&   r&   r'   test_median[   s    z SafeForLongAndSparse.test_medianc             C   s   |  dtj d S )Nmin)rR   rV   rb   )r,   r&   r&   r'   test_mine   s    zSafeForLongAndSparse.test_minc             C   s   |  dtj d S )Nmax)rR   rV   rd   )r,   r&   r&   r'   test_maxi   s    zSafeForLongAndSparse.test_maxc                s(   ddl m   fdd}| d| d S )Nr   )skewc                s   t | dk rtjS  | ddS )N   F)Zbias)lenrV   r]   )r_   )rf   r&   r'   	this_skewq   s    z1SafeForLongAndSparse.test_skew.<locals>.this_skewrf   )Zscipy.statsrf   rR   )r,   ri   r&   )rf   r'   	test_skewm   s    zSafeForLongAndSparse.test_skewc             C   s   dd }|  d| d S )Nc             S   s    t | dk rtjS tj| ddS )N   r5   )ddof)rh   rV   r]   var)r_   r&   r&   r'   alty   s    z*SafeForLongAndSparse.test_var.<locals>.altrm   )rR   )r,   rn   r&   r&   r'   test_varx   s    zSafeForLongAndSparse.test_varc             C   s   dd }|  d| d S )Nc             S   s    t | dk rtjS tj| ddS )Nrk   r5   )rl   )rh   rV   r]   std)r_   r&   r&   r'   rn      s    z*SafeForLongAndSparse.test_std.<locals>.altrp   )rR   )r,   rn   r&   r&   r'   test_std   s    zSafeForLongAndSparse.test_stdc             C   s   dd }|  d| d S )Nc             S   s.   t | dk rtjS tj| ddtt |  S )Nrk   r5   )rl   )rh   rV   r]   rp   sqrt)r_   r&   r&   r'   rn      s    z*SafeForLongAndSparse.test_sem.<locals>.altZsem)rR   )r,   rn   r&   r&   r'   test_sem   s    zSafeForLongAndSparse.test_semNTc          	      s   |d kr| j }t||}|rjt |} fdd}x<t|jD ]$}	||	dd}
t|
|j||	d q@W n } }x8t|jD ]*}	||	d}
|dkr~t|
|j||	d q~W tj	t
||jd dt|jkrtj	t|d |d	d
 W d Q R X d S )Nc                s    t | S )N)rV   asarray)r_   )alternativer&   r'   r`      s    z4SafeForLongAndSparse._check_stat_op.<locals>.wrapperF)axisZskipna)rv   )rM   rZ   numeric_only)matchT)rw   )r+   rC   r#   Z_make_skipna_wrapperr   ndimr   applyr/   r0   	Exceptionr	   argsr1   )r,   rD   ru   rP   rQ   rU   rS   Zskipna_wrapperr`   iresultr&   )ru   r'   rR      s(    

z#SafeForLongAndSparse._check_stat_op)NTN)r:   r;   r<   r?   rH   rL   rT   rW   rY   r[   r/   markfilterwarningsra   rc   re   tdZskip_if_no_scipyrj   ro   rq   rs   rR   r&   r&   r&   r'   r=   >   s"   
	 r=   c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$SafeForSparsec             C   sL   | j d| j jkst| j d| j jks0t| j d| j jksHtd S )Nr   r5   rk   )r+   Z	_get_axisrK   rE   r@   rA   )r,   r&   r&   r'   test_get_axis   s    zSafeForSparse.test_get_axisc             C   s   t tt| jj}t tt| jj}t tt| jj}| jd }|| j_t| jdrpd| jj	kspt
| jj|kst
| jd }|| j_| jd j|kst
| jj|kst
| jd }|| j_| jd j|kst
| jj|kst
d S )Nr*   _item_cacher   )r   rV   arangerh   r+   rK   r@   rA   hasattrr   rE   indexcolumns)r,   Z	new_items	new_major	new_minoritemr&   r&   r'   test_set_axis   s     


zSafeForSparse.test_set_axisc          	   C   s   | j ddkst| j ddks(t| j ddks<ttjtdd | j d	 W d Q R X tjtdd | j j| j d	d
 W d Q R X d S )NrK   r   majorr5   minorrk   zNo axis named foo)rx   rB   )rv   )r+   Z_get_axis_numberrE   r/   r0   
ValueError__ge__)r,   r&   r&   r'   test_get_axis_number   s    z"SafeForSparse.test_get_axis_numberc             C   s@   | j ddkst| j ddks(t| j ddks<td S )Nr   rK   r5   r@   rk   rA   )r+   Z_get_axis_namerE   )r,   r&   r&   r'   test_get_axis_name   s    z SafeForSparse.test_get_axis_namec             C   sD   | j d\}}| j d\}}| j d\}}| j d\}}d S )NrK   r@   rA   r   )r+   Z_get_plane_axes)r,   r   r   r&   r&   r'   test_get_plane_axes   s    z!SafeForSparse.test_get_plane_axesc             C   s   | j j}|d |d  }}| j j||dd}| j d ||}t|d | | j j|dd}| j d j|d}t|d | | j j|dd}| j d j|d	}t|d | d S )
Nr5      r   )rv   r*   )beforerv   )r   )afterrv   )r   )r+   r@   truncater   )r,   datesstartendtruncedexpectedr&   r&   r'   test_truncate   s    zSafeForSparse.test_truncatec             C   s0  |  | jtj |  | jtj |  | jtj |  | jtj |  | jtj |  | jtj |  | jdd  |  | jdd  |  | jdd  |  | jdd  |  | jdd  |  | jdd  |  | jdd  |  | jd	d  |  | jd
d  |  | jdd  t	
t| jj| jd  d S )Nc             S   s   ||  S )Nr&   )r_   yr&   r&   r'   r.     s    z*SafeForSparse.test_arith.<locals>.<lambda>c             S   s   ||  S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   ||  S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   ||  S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   ||  S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   | | S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   | | S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   | | S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   | | S )Nr&   )r_   r   r&   r&   r'   r.     s    c             S   s   | | S )Nr&   )r_   r   r&   r&   r'   r.     s    r*   )_test_opr+   operatoraddsubmultruedivfloordivpowr/   r0   r{   __add__)r,   r&   r&   r'   
test_arith  s$    zSafeForSparse.test_arithc             C   s&   || d}t |d || d d d S )Nr5   r*   )r   )r+   opr~   r&   r&   r'   r     s    
zSafeForSparse._test_opc             C   s   t t| j | jj d S )N)r#   rI   rJ   r+   keysrK   )r,   r&   r&   r'   	test_keys!  s    zSafeForSparse.test_keysc             C   s>   x| j  D ]\}}qW tt| j  t| j jks:td S )N)r+   	iteritemsrh   rJ   rK   rE   )r,   kvr&   r&   r'   test_iteritems$  s    zSafeForSparse.test_iteritemsc          	      s    fdd}ddddddd	g}t js.|d
 xD|D ]<}y|tt|| W q4 tk
rn   td|   Y q4X q4W t jry|tjd
 W n" tk
r   tdd
   Y nX d S )Nc                s    j d }t j |}||dd}t|d |  j d |  j  j jd }||dd} j jd }t|||  j ||  j  j jd }||dd} j jd }t|||  j || d S )	Nr*   rK   )rv   ItemBr   r   r5   r   )r+   rC   r   major_xsr@   minor_xsrA   )r   rD   dffuncr~   xsidx)r,   r&   r'   check_op-  s    


z1SafeForSparse.test_combineFrame.<locals>.check_opr   r   r   r   r   r   moddivzFailing operation: %r)r   PY3appendrC   r   AttributeErrorr   r   )r,   r   opsr   r&   )r,   r'   test_combineFrame,  s     

zSafeForSparse.test_combineFramec             C   s"   | j | j }t|| j d  d S )Nrk   )r+   r   r   )r,   r~   r&   r&   r'   test_combinePanel[  s    zSafeForSparse.test_combinePanelc             C   s   t | j | jd  d S )N)r   r+   )r,   r&   r&   r'   test_neg_  s    zSafeForSparse.test_negc          
   C   s   t tdddddddgtddd	td
d}|jddjd }ddddddddg}x4|D ],}t	t
 t|||dd W d Q R X q^W d S )N<   rg      r   r*   r   ItemCZ20130101)periodsABCDE)rK   r@   rA   r5   )rv   r   r   r   r   r   r   r   r   r   )r   rV   r   reshaper   rJ   rM   ilocr/   r0   r1   rC   )r,   pdr   r   r&   r&   r'   test_raise_when_not_implementedc  s    

z-SafeForSparse.test_raise_when_not_implementedc          	   C   s.  | j }tjtdd |jdd dd}W d Q R X |jddgd	}t|| tjtdd |jd
d dd}W d Q R X |j|jtdddk }|j|d}t|| tjtdd |jdd dd}W d Q R X |jddgd}t|| tjtdd |jdd dd}W d Q R X t||jg d	 d S )NF)check_stacklevelc             S   s   | dkS )N)r*   r   r&   )r_   r&   r&   r'   r.   t  s    z+SafeForSparse.test_select.<locals>.<lambda>rK   )rv   r*   r   )rK   c             S   s   | t dddkS )Ni  r5      )r   )r_   r&   r&   r'   r.   z  s   r   i  r5   r   )r   c             S   s   | dkS )N)DAr&   )r_   r&   r&   r'   r.     s    rk   r   r   )r   c             S   s   | dkS )N)rB   r&   )r_   r&   r&   r'   r.     s    )	r+   r#   assert_produces_warningr"   Zselectreindexr   r@   r   )r,   r   r~   r   r   r&   r&   r'   test_selecto  s$    



zSafeForSparse.test_selectc             C   s   x| j jD ]x}xr| j jd d d D ]\}xV| j jD ]J}tjtdd | j |||}W d Q R X | j | | | }t|| q0W q"W q
W d S )Nrk   F)r   )	r+   rK   r@   rA   r#   r   r"   	get_valuer   )r,   r   mjrmnrr~   r   r&   r&   r'   test_get_value  s    
zSafeForSparse.test_get_valuec             C   s   | j  }t| j }t| j }t|| t|| | j d }| }t|}t|}t|| t|| |d }| }t|}t|}t|| t|| |jdkst|jdkstd S )Nr*   r   )r+   absrV   r   r   r   rD   rE   )r,   r~   Zresult2r   r   rN   r&   r&   r'   test_abs  s&    










zSafeForSparse.test_absN)r:   r;   r<   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r&   r&   r&   r'   r      s"   /
r   c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5S )6CheckIndexingc             C   s   t t| jjd d S )NItemQ)r/   r0   r{   r+   __getitem__)r,   r&   r&   r'   test_getitem  s    zCheckIndexing.test_getitemc             C   s<  | j d }| j d}t|| d| j jks0t| j d= d| j jksHttt| j jd t	
d}d|d< d|d< d|d< t|tdtdtd}| }|d= t|d |d  t|d |d  | }|d= t|d |d  t|d |d  | }|d= t|d |d  t|d |d  d S )Nr*   r   )rg   rg   rg   r   r5   rk   rg   )r+   popr   rK   rE   r/   r0   r{   __delitem__rV   emptyr   r   r%   r#   )r,   r   r~   valuesr+   Zpanelcr&   r&   r'   test_delitem_and_pop  s0    


z"CheckIndexing.test_delitem_and_popc          	   C   s  | j ddg }tt || j d< W d Q R X | j d dd  jddgd}|| j d< || j d< | j d }t||j|j|j	d	 d
| j d< d| j d< | j d j
jtjkst| j d j
jtjkstd| j d< | j d j
jtjkst| j d dk| j d< | j d j
jtjksttt| j jd| j jdg  ttjddd}d}tjt|d tjdd|d< W d Q R X d S )Nr*   r   ItemErk   r   B)rK   ZItemF)r   r   r5   ZItemGTrB   r   r   ZItemPr   rg   zCshape of value must be \(3, 2\), shape of given object was \(4, 2\))rx   )r+   filterto_framer/   r0   r6   r   r   r   r   r   dtyperV   int64rE   bool_object___setitem__locr   randomrandnr   )r,   lpr   df2r   msgr&   r&   r'   test_setitem  s.    





zCheckIndexing.test_setitemc             C   s   t tdddtdddt d}tddd}td	d
d}t|||d}tjdd}tddd}|||< t	|| j
| d S )Ni  r5         )r   r   freqg     0fg     0f@H   g     Ug     U@$   )rK   r@   rA   i 
  )r   r   rk      )r   r   r   rV   Zlinspacer   r   r   r   r   r   )r,   ZtimeidxZlons_coarseZlats_coarsePdatakeyr&   r&   r'   test_setitem_ndarray  s    

z"CheckIndexing.test_setitem_ndarrayc             C   s   t dddtjdtjg}t dtjdtjddg}t||d}t|jd d d d df }||jd d d d df< t|jd d d d df |t	 t|jd d dd d f }||jd d dd d f< t|jd d dd d f |t	 d S )Nag      ?)Item1Item2r   ZNewMinorZNewMajor)
r   rV   r]   r   r   r   r   r   astypeobject)r,   df1r   r+   ZnewminorZnewmajorr&   r&   r'   test_set_minor_major  s    z"CheckIndexing.test_set_minor_majorc             C   st   | j d }| j jd }| j |}|d }t|||dd |jdksLt| j jd t  }t	t
| j j| d S )Nr*   r   F)check_namesr   )r+   r@   r   r   r   rD   rE   r   r/   r0   r{   )r,   refr   r   r~   r&   r&   r'   test_major_xs  s    
zCheckIndexing.test_major_xsc             C   sJ   d| j d< | j | j jd }|d jtjks2t|d jtjksFtd S )NrB   ItemDr   r*   )r+   r   r@   r   rV   float64rE   r   )r,   r   r&   r&   r'   test_major_xs_mixed*  s    
z!CheckIndexing.test_major_xs_mixedc             C   sN   | j d }| j jd }| j |}t|d || dd tt| j jd d S )Nr*   r5   F)r  E)r+   rA   r   r   r/   r0   r{   )r,   r  r   r   r&   r&   r'   test_minor_xs0  s
    
zCheckIndexing.test_minor_xsc             C   sB   d| j d< | j d}|d jtjks*t|d jtjks>td S )NrB   r  r   r*   )r+   r   r   rV   r  rE   r   )r,   r   r&   r&   r'   test_minor_xs_mixed;  s    
z!CheckIndexing.test_minor_xs_mixedc             C   s   | j jddd}| j d }t|| | j jddd}tj|jd d < t| j d j s`t	d| j d< | j jddd}|j
d k	st	d S )Nr*   r   )rv   rB   Zstringsr   rk   )r+   r   r#   r   rV   r]   r   ZisnanallrE   Z_is_copy)r,   ZitemAr   Z
itemA_viewr~   r&   r&   r'   test_xsB  s    

zCheckIndexing.test_xsc          	   C   sP  | j }|jddg }|jd d d }dddg}t  tdt t|j|||f |j|||d t|jd d ||f |j||d	 t|j|d d |f |j||d
 t|j||d d f |j||d t|j|d d d d f |j|d t|jd d |d d f |j|d t|jd d d d |f |j|d W d Q R X d S )Nr5   r   rk   r   CFr!   )rK   r   r   )r   r   )rK   r   )rK   r   )rK   )r   )r   )	r+   rK   r@   r   r   r"   r   r   r   )r,   r   rK   r   colsr&   r&   r'   test_getitem_fancy_labelsR  s"    


&&z'CheckIndexing.test_getitem_fancy_labelsc             C   s   d S )Nr&   )r,   r&   r&   r'   test_getitem_fancy_sliceq  s    z&CheckIndexing.test_getitem_fancy_slicec             C   sJ   | j }|jd d dd d f }|jd d |jd d d f }t|| d S )Nr   )r+   r   r   r@   r   )r,   r   r~   r   r&   r&   r'   test_getitem_fancy_intst  s    z%CheckIndexing.test_getitem_fancy_intsc             C   s^  | j }d}|jd }d}t|j| ||  t|j|d d f ||  t|j|d d d d f ||  t|jd d |f || t|jd d |d d f || t|jd d d d df |d t|j||f || j|  t|j||d d f || j|  t|j|d d |f || |  t|jd d ||f ||j|  d S )Nr   r   r  )r+   r@   r   r   r   r   r   )r,   r   r   datecolr&   r&   r'   test_getitem_fancy_xs|  s    
"$$$"z#CheckIndexing.test_getitem_fancy_xsc             C   s   d}| j jd }td d }t}| || | ||f| | |||f| | ||f| | |||f| | ||df| t}| ||f| | |||f| | ||df| | ||df| d S )Nr   r   r  )r+   r@   slicer   _check_viewr   )r,   r   r  ZNScompr&   r&   r'    test_getitem_fancy_xs_check_view  s    
z.CheckIndexing.test_getitem_fancy_xs_check_viewc             C   s>   | j }t|dd  |jd  t|dd  |jddg  d S )Nc             S   s   dS )Nr   r&   )r_   r&   r&   r'   r.     s    z5CheckIndexing.test_getitem_callable.<locals>.<lambda>r   c             S   s   ddgS )Nr   r   r&   )r_   r&   r&   r'   r.     s    r   )r+   r   r   r   )r,   r   r&   r&   r'   test_getitem_callable  s    z#CheckIndexing.test_getitem_callablec             C   s|   t dddgdddgddd	gd
}ttjdddd	gdddgd}||jd d ddd	gf< t|jd d ddd	gf | d S )Nr5   rk   rg         !   o      iM  )rK   r@   rA   )r   r   )r   r   rV   r   r   r   r   )r,   r   br&   r&   r'   test_ix_setitem_slice_dataframe  s    z-CheckIndexing.test_ix_setitem_slice_dataframec             C   s  ddl m} |tjddd}|  ttjddd}| }||jdd d df< t	|jdd d df 
|j| |dd}||jd d ddf< t	|jd d ddf 
|j| |dd}||jddd d f< t	|jddd d f 
|j| d S )Nr   )r   
   )rD   rg   rk   r5   )pandasr   rV   r   r   sort_valuesr   r%   r   r   r   r   swapaxes)r,   r   r"  Zdf_origr   r&   r&   r'   test_ix_align  s    ""zCheckIndexing.test_ix_alignc       	      C   sd  t  }|jd  }t|d | | }||jdd d d d f< t|| | }||jd< t|| | }||jdd d d d f< t|| | }||jd< t|| | }||jd< t|| | }||jdd d d d f< t|| | }||d< t|| | }||jdddddgdd f< |jdddddgdd f }t||jddddgddgf  xdD ]}tt	d	
d
ddg|d}|jd }|jd }t |jd | t |jd | |j|jd< t |jd | t |jd | ||d< t |jd | t |jd | ||jd< t |jd | t |jd | qvW d S )Nr   r*   r5   rg   r   rk   )r  r   (   )rk   r   r   Za1Za2)rK   r   )r#   r$   r   r%   r   r   r   r   rV   r   r   r   )	r,   Zp_origr   r   outr   r+   r  r   r&   r&   r'   test_ix_frame_align  sX    









 



z!CheckIndexing.test_ix_frame_alignc             C   sN   | j  }|j| }d|jd d < |jdk s4t||j| || d S )Nr   )r+   r%   r   r   r  rE   reindex_like)r,   Zindexerr  rG   rP   r&   r&   r'   r    s
    

zCheckIndexing._check_viewc             C   s   t dtjdgidddgid}|d |d B }tdtjdgi}t|| |d d|d B }tdddgi}t|| d S )Nr   FT)r*   r   r*   r   )r   rV   r]   r   r   fillna)r,   r   r~   r   r&   r&   r'   test_logical_with_nas  s    
z#CheckIndexing.test_logical_with_nasc             C   s   t | j d| j  d S )Nr   )r   r+   )r,   r&   r&   r'   r   %  s    zCheckIndexing.test_negc             C   s   t | jdk  | jdk   d S )Nr   )r   r+   )r,   r&   r&   r'   test_invert(  s    zCheckIndexing.test_invertc          	      s   t  t  jjdg djd    fdd}tjddB |tj |tj |tj	 |tj
 |tj |tj W d Q R X d S )NrB   )rK   r   c                sj   | }t |j| jj tt|  tt|   | jd}t |j| jjd d S )Nr   )r#   assert_numpy_array_equalr   r/   r0   r{   r+   )r   r~   Zresult3)r   p1p2r,   tpr&   r'   	test_comp2  s    
z1CheckIndexing.test_comparisons.<locals>.test_compr!   )invalid)r#   r$   r   rK   rV   errstater   eqneltgtgele)r,   r5  r&   )r   r2  r3  r,   r4  r'   test_comparisons+  s    




zCheckIndexing.test_comparisonsc             C   s   x| j jD ]x}xr| j jd d d D ]\}xV| j jD ]J}tjtdd | j |||}W d Q R X | j | | | }t|| q0W q"W q
W t	 : t
dt d}tjt|d | j d W d Q R X W d Q R X d S )Nrk   F)r   r!   z'There must be an argument for each axis)rx   r   )r+   rK   r@   rA   r#   r   r"   r   r   r   r   r/   r0   r6   )r,   r   r   r   r~   r   r   r&   r&   r'   r   L  s    

zCheckIndexing.test_get_valuec             C   s:  x| j jD ]x}xr| j jd d d D ]\}xV| j jD ]J}tjtdd | j |||d W d Q R X t| j | | | d q0W q"W q
W t	  t
dt | j dddd	}t|tst|| j k	st|dddd	kst| j dd
dd}t|d jstd}tjt|d | j d W d Q R X W d Q R X d S )Nrk   F)r   g      ?r!   r   rB   barg      ?Zfoobarbazr   z?There must be an argument for each axis plus the value provided)rx   r   )r+   rK   r@   rA   r#   r   r"   Z	set_valuer   r   r   
isinstancer   rE   r   r
   r   r/   r0   r6   )r,   r   r   r   ZresZres3r   r&   r&   r'   test_set_value[  s$    
&
zCheckIndexing.test_set_valueN)r:   r;   r<   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r  r  r#  r(  r,  r  r/  r   r0  r>  r   rB  r&   r&   r&   r'   r     s4   "(
@!r   c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2e3j45dadbdc Z6e3j45daddde Z7dfdg Z8e3j45dhdidj Z9dkdl Z:dmdn Z;dodp Z<dqdr Z=e3j45dsdtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d ZCe3j4DdddieEdfddieFdfgdd ZGdd ZHe3j4Ddddgdd ZIdd ZJdd ZKdd ZLdS )	TestPanelc             C   s*   t  | _d | jj_d | jj_d | jj_d S )N)r(   r+   r@   rD   rA   rK   )r,   methodr&   r&   r'   setup_methody  s    

zTestPanel.setup_methodc             C   sj  t | jj}|j| jjkstt | jjdd}|j| jjk	s@tt|| j t dddgdddggg}|jjtj	kszt| jj}t |}|j|kstt |dd}|j|k	stdddtj	fg}xX|D ]P\}}t |t
dt
dt
dd	}tjd
|d}|| t|t ||d qW t dt
dt
dt
ddd}tjd
dd}|d t|t |dd d S )NT)r%   rB   )r5   r   )gQ	@r  rk   rg   r   )rK   r@   rA   )rk   rg   r   )r   r5   float32)rK   r@   rA   r   )r   r+   _datarE   r#   r   r   r   rV   r   r   r   Zfill)r,   wpZvalsZvalue_and_dtypevalr   r&   r&   r'   test_constructor  s4    

zTestPanel.test_constructorc             C   s   | j d}t|jtd}t|jtd}|jt}t|j| t|j| t|jtj	d}t|jtj	d}|jtj	}t|j| t|j| dddggg}t
jtt|td d S )Nr   )r   rB   r?  r@  )r+   r.  r   rG  intr   r   r   rV   int32r/   r0   r   float)r,   Zzero_filledZcastedZcasted2Z
exp_valuesr   r&   r&   r'   test_constructor_cast  s    zTestPanel.test_constructor_castc             C   s@   t  }t|jdkstt|jdks*tt|jdks<td S )Nr   )r   rh   rK   rE   r@   rA   )r,   r   r&   r&   r'   test_constructor_empty_panel  s    z&TestPanel.test_constructor_empty_panelc             C   s2   t tdtdtddd}|jjtjks.td S )Nrg   O)rK   r@   rA   r   )r   r   r   r   rV   r   rE   )r,   r+   r&   r&   r'   test_constructor_observe_dtype  s    z(TestPanel.test_constructor_observe_dtypec             C   s  dd }x2dD ]*}t tdtdtd|d}||| qW xJdD ]B}t tjtjddd|d	tdtdtd|d}||| qBW xJdD ]B}t tjtjdddd
d	tdtdtd|d}||| qW x@dD ]8}t tjdddtdtdtd|d}||| qW xldD ]d}ttjddtdtdd}ttjddtdtdd}t j||d|d	}||| qW d S )Nc             S   s*   x$| j D ]}| | jjj|kstqW d S )N)rK   r   r   rD   rE   )r+   r   r}   r&   r&   r'   _check_dtype  s    z7TestPanel.test_constructor_dtypes.<locals>._check_dtype)r  rF  r  rk   r$  r   )rK   r@   rA   r   )r  rF  r   rL  r  )r   rP  )r   r   )r   r"  )r   r   rV   arrayr   r   r   	from_dict)r,   rR  r   r+   r  r   r&   r&   r'   test_constructor_dtypes  s>    




z!TestPanel.test_constructor_dtypesc          	   C   s4   d}t jt|d ttjdd W d Q R X d S )Nz&The number of dimensions required is 3)rx   r$  rk   )r/   r0   r   r   rV   r   r   )r,   r   r&   r&   r'   (test_constructor_fails_with_not_3d_input  s    z2TestPanel.test_constructor_fails_with_not_3d_inputc             C   sF   | j j std| j d< | j j r*t| j  }|j sBtd S )Ng      ?rB   )r+   rG  Zis_consolidatedrE   Z_consolidate)r,   r+   r&   r&   r'   test_consolidate  s
    

zTestPanel.test_consolidatec                s  | j d }| j d }||dd  d}|j|dd  jd}d t|dd  jt|jd}t| t|}t|}t j| j j t | tj|dd t j|j	dd   tt|t| tt|t| tt|t| d d d}t|}	tt|tdd	gd
  fddt
|D }
t|
td}tdd t
|
D }t|| t|
tjd}tdd t
|
D }t|| d S )Nr*   r   r   )r   r   )r   r   r  T)Z	intersectr   r   )rK   c                s$   i | ]\}}|  jd |qS )r   )r   r@   r.  ).0r   r   )rH  r&   r'   
<dictcomp>*  s   z,TestPanel.test_ctor_dict.<locals>.<dictcomp>)r   c             S   s   i | ]\}}| t|qS r&   )r   rK  )rX  r   r   r&   r&   r'   rY  -  s   c             S   s   i | ]\}}| tj|qS r&   )r   rV   rL  )rX  r   r   r&   r&   r'   rY  2  s   )r+   Z_seriesr   r   rT  r#   assert_index_equalr@   r   r   r   r   rK  rV   rL  )r,   ZitemaZitembr   Zd2Zd3wp2Zwp3Zd4Zwp4Zdcastedr~   r   r&   )rH  r'   test_ctor_dict  s<    









zTestPanel.test_ctor_dictc             C   s   dd | j  D }t|}ttt| j j}t	|j| t|| j j
| j j| j jd}t|| j  | j d |d< t|}t|| j  |d d d |d< ttt| | j d jd d d df |d< ttt| d S )Nc             S   s   i | ]\}}|j |qS r&   )r   )rX  r   r   r&   r&   r'   rY  7  s    z9TestPanel.test_constructor_dict_mixed.<locals>.<dictcomp>)rK   r@   rA   r   r   r   )r+   r   r   r   rV   r   rh   r@   r#   rZ  rK   rA   r   r/   r0   r{   r   )r,   r   r~   Z	exp_majorr&   r&   r'   test_constructor_dict_mixed6  s    
 z%TestPanel.test_constructor_dict_mixedc             C   sl   t ttjdddd d }tdd |D }t|}t |j|ksLtt	|}t |j|kshtd S )Nr   i  d   2   c             S   s   g | ]}|t d dfqS )r$  r   )mkdf)rX  r   r&   r&   r'   
<listcomp>O  s    z3TestPanel.test_ctor_orderedDict.<locals>.<listcomp>)
rJ   setrV   r   randintr   r   rK   rE   rT  )r,   r   r   r   r&   r&   r'   test_ctor_orderedDictL  s    
zTestPanel.test_ctor_orderedDictc             C   s   | j j}| j jd d }| j jd d }| j jd d }t||||d}| j j|||d}t|| t|||d}| j j||d}t|| t||d}| j j|d}t|| t||d}| j j|d}t|| d S )	Nr   )rK   r@   rA   )rK   r   r   )rK   r@   )rK   r   )rK   )rA   )r   )r+   rG  rK   r@   rA   r   r   r   )r,   r   rK   r   r   r~   r   r&   r&   r'   test_constructor_resizeV  s$    



z!TestPanel.test_constructor_resizec             C   sX   t  }d|d< ||d}tj|dd}|d jjtjks>t|d jjtj	ksTtd S )Nr?  rB   )Zk1Zk2r   )orientr   )
r#   ZmakeDataFramer   rT  r   r   rV   r   rE   r  )r,   r   r   r+   r&   r&   r'   test_from_dict_mixed_orientn  s    
z%TestPanel.test_from_dict_mixed_orientc          	   C   s   d}t jt|d, ttjdddtdtdtd W d Q R X d}t jt|d, ttjdddtdtdtd W d Q R X d}t jt|d, ttjdddtdtdtd W d Q R X d S )Nz@Shape of passed values is \(3, 4, 5\), indices imply \(4, 5, 5\))rx   rg   r   r   z@Shape of passed values is \(3, 4, 5\), indices imply \(5, 4, 5\)z@Shape of passed values is \(3, 4, 5\), indices imply \(5, 5, 4\))r/   r0   r   r   rV   r   r   r   )r,   r   r&   r&   r'   test_constructor_error_msgsy  s      z%TestPanel.test_constructor_error_msgsc             C   sR   | j d d d jddgd}| j |}t|j| j j t|j| j j d S )Nr*   r   r   )rK   )	r+   r   Zconformr#   rZ  r   r@   r   rA   )r,   r   Z	conformedr&   r&   r'   test_conform  s    zTestPanel.test_conformc             C   sL   t ttddgdd}t ttddgdd}|jddd}t|| d S )	N1z1.0)r   )r   r5   g      ?T)ZnumericZcoerce)r   dict_convertr   )r,   r   r   r~   r&   r&   r'   test_convert_objects  s    zTestPanel.test_convert_objectsc             C   s,   | j j}ttd| j jd}t|| d S )Nr  )r   )r+   dtypesr   rV   r   rK   r   )r,   r~   r   r&   r&   r'   test_dtypes  s    zTestPanel.test_dtypesc             C   s   t ddgddggddgddggg}t|d	d
gddgddg}t ddgddggddgddggg}t|d	d
gddgddg}t|t| tt|jdti d S )Nr5   rk   rg   r   r            r   r"  r8   r   erS   rk  2345678r   )	rV   rS  r   r   r   strr/   r0   r1   )r,   r   r+   Zstr_datar   r&   r&   r'   test_astype  s    &zTestPanel.test_astypec          	   C   s  | j tj}tjdd t| j j}W d Q R X t|j| | j jdd dd}| j d }t|| | j jdd d	d}| j d }t|| | j jd
d dd}| j d }t|| | j jdd dd}tt	d| j j
| j jd}t|| | j jdd d	d}tt	d| j j| j jd}t|| | j jdd dd}tt	d| j j
| j jd}t|| | j d}| j jdd dd}t|| | j d}| j jdd d	d}t|| | j d}| j jdd dd}t|| | j jdd ddd}| j dd }t|| d S )Nr!   )r6  c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    z&TestPanel.test_apply.<locals>.<lambda>rK   )rv   rk   c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    r@   c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    rA   c             S   s   | j S )N)r   )r_   r&   r&   r'   r.     s    r  )r   r   c             S   s   | j S )N)r   )r_   r&   r&   r'   r.     s    c             S   s   | j S )N)r   )r_   r&   r&   r'   r.     s    r   c             S   s   |   S )N)rM   )r_   r&   r&   r'   r.     s    r5   c             S   s   |   S )N)rM   )r_   r&   r&   r'   r.     s    c             S   s   |   S )N)rM   )r_   r&   r&   r'   r.     s    c             S   s   |   | S )N)rM   )r_   r   r&   r&   r'   r.     s    r   )rv   r   )r+   rz   rV   rr   r7  r   r   r   r   r   r@   rA   r   rK   rM   )r,   Zappliedr   r~   r&   r&   r'   
test_apply  sR    














zTestPanel.test_applyc                s  j jdd ddgd}j d ddd}t|| j jdd ddgd}t|| j jd	d ddgd}j d ddd}t|| j jd
d ddgd}t|| j jdd ddgd}j d }t|| j jdd ddgd}t|| j jdd ddgd}j dj}t|| j jdd ddgd}j d}t|| dd  j j ddgd}t fddj jD }t|| j j ddgd}t fddj j	D }t|| j j ddgd}t fddj j
D }t|| tddddg}tttjdddddtd|d }tttjd!d"ddddtd|d }t||d#}|jd$d dd}|d}|d}t|| d S )%Nc             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    z,TestPanel.test_apply_slabs.<locals>.<lambda>rK   r@   )rv   rk   rA   c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    c             S   s   | d S )Nrk   r&   )r_   r&   r&   r'   r.     s    c             S   s
   |  dS )Nr   )rM   )r_   r&   r&   r'   r.      s    r5   c             S   s
   |  dS )Nr5   )rM   )r_   r&   r&   r'   r.     s    r   c             S   s   | j | d | d j S )Nr5   )TrX   rp   )r_   r&   r&   r'   r.     s    c                s,   i | ]$} j jd d d d |f |qS )N)r+   r   )rX  ax)rS   r,   r&   r'   rY    s   z.TestPanel.test_apply_slabs.<locals>.<dictcomp>c                s   i | ]} j j| |qS r&   )r+   r   )rX  r  )rS   r,   r&   r'   rY    s   c                s&   i | ]} j jd d |f |qS )N)r+   r   )rX  r  )rS   r,   r&   r'   rY    s   )oner   )r  r"  )twor   )r  r"  r   r   )r   r   rg   ABC)r   r   r$  r  )rS   gc             S   s   |   S )N)rM   )r_   r&   r&   r'   r.   (  s    )r+   rz   	transposer   rM   r  r   r   rA   rK   r@   r   from_tuplesr   rV   rS  r   r   rJ   r   )r,   r~   r   r   ZdfaZdfbr   r&   )rS   r,   r'   test_apply_slabs  sn    














zTestPanel.test_apply_slabsc       	      C   s   t tjddd| _| jjdd ddgd}| jjdd ddgd}| jjdd ddgd}| jjd	d ddgd}td
gd  }}tdgd  }}t|| t|| t|| t|| d S )Nr   c             S   s   dS )Nr   r&   )r   r&   r&   r'   r.   3  s    z6TestPanel.test_apply_no_or_zero_ndim.<locals>.<lambda>r5   rk   )rv   c             S   s   dS )Ng        r&   )r   r&   r&   r'   r.   4  s    c             S   s
   t dS )Nr   )rV   r   )r   r&   r&   r'   r.   6  s    c             S   s
   t dS )Ng        )rV   r  )r   r&   r&   r'   r.   7  s    r   g        )r   rV   r   randr+   rz   r   r   )	r,   Z
result_intZresult_floatZresult_int64Zresult_float64Zexpected_intZexpected_int64Zexpected_floatZexpected_float64r&   r&   r'   test_apply_no_or_zero_ndim/  s    


z$TestPanel.test_apply_no_or_zero_ndimc             C   sr  | j d }| j jddgd}t|d | t| j jd d }| j j|d}t|d |j|d tjt| j j||d t| j jd d }| j j|d	}t|d |j|d
 tjt| j j||d | j  }t	|| j  || j k	st
| j jd d d }| j j|d}|j| j jdd}t|| j jd ||d  | j j| j jdd}t	|| j  || j ksnt
d S )Nr   r*   )rK   r$  )r   )r   )r@   r   rk   )r   )r   )rA   r   r   Zpad)r   rD  r5   r   F)r   r%   )r+   r   r   rJ   r@   r/   r0   r{   rA   r   rE   r   )r,   r  r~   r   r   Zsmaller_majorsmallerZlargerr&   r&   r'   test_reindexB  s6    

zTestPanel.test_reindexc             C   s   t tjddd}t |jjddg }t |jjd d ddgf }t |jjd d d d ddgf }|jddgdd}t|| |jddgdd}t|| |jddgdd}t|| |jddgdd}t|| d S )Nr   r   r5   )rv   rk   )r   rV   r   r  r   r   r   r   )r,   r+   Z	expected0Z	expected1Z	expected2r~   r&   r&   r'   test_reindex_axis_styleq  s    "


z!TestPanel.test_reindex_axis_stylec             C   s  | j j| j j| j j| j jdd}|j| j jks2t|j| j jksDt|j| j jksVt| j j| j j| j j| j jdd}t|| j  ttj	
dd}td|i}td|i}tj|d< ddg}td}td}g }||j||dd ||j||dd ||j||dd	 ||j||dd	 ||j|||dd
 ||j|||dd
 x t|D ]\}	}
t||
 qhW d S )NF)rK   r   r   r%   r   rg   r   r   T)rK   r@   r%   )rK   rA   r%   )rK   r@   rA   r%   )r+   r   rK   r@   rA   rE   r   r   rV   r   r   r   r]   r   r   	enumerate)r,   r~   r   r   r   rK   r@   rA   Zresultsr}   rr&   r&   r'   test_reindex_multi  sD    






zTestPanel.test_reindex_multic             C   sP   | j j| j jd d | j jd d | j jd d d}| j |}t|| d S )Nr   )rK   r   r   )r+   r   rK   r@   rA   r-  r   )r,   r  Zsmaller_liker&   r&   r'   test_reindex_like  s
    zTestPanel.test_reindex_likec             C   s   | j jdddgdd}| j jdddgd}t|| | j jd	dddgdd}| j jd
dddgd}t|| | j jd
d
ddgd}| j jd	dddgdd}t|| tjt| j jddddgdd d S )Nrk   r   r5   )rv   r   r*   r   )rK   rg   r   r   r   r  )r   r   r   )r+   taker   r   r/   r0   r{   )r,   r~   r   r&   r&   r'   	test_take  s    


zTestPanel.test_takec             C   s   dd l }t| jj}t| jj}t| jj}|| || || | jj|d}|jdd}t	|| j | jj|d}|jddd}t	|| jj| jjd d d d | jj|d}|jdd}t	|| j | jj|d	}|jd
d}t	|| j d S )Nr   )rK   )rv   F)rv   Z	ascendingr   )r   r5   )r   rk   )
r   rJ   r+   rK   r@   rA   Zshuffler   
sort_indexr   )r,   r   ZritemsZrmajorZrminorZrandom_orderZsorted_panelr&   r&   r'   test_sort_index  s*    


zTestPanel.test_sort_indexc                s  | j d}t|j s t| j jdd}t|d | j d jdd | j  }d|d< |jdd}t|d |d jdd | j j	g d}|d}t
|| tt| j j tjt| j jdd	d tt| j jd
dg tt| j jd ttjddd tj jddddddf< tt fdd tdd
gdd
ggddgddgggddgddgtjd}tdd
gdtjggddgdtjgggddgddgtjd}|jd	dd t
|| tdtjgdd
ggdtjgddgggddgddgtjd}|jddd t
|| d S )Nr   Zbackfill)rD  r*   rB   r|  )rK   r   ffillr5   rk   )r5   rk   rg   r   c                  s    j dddS )Ni  r5   )limit)r.  r&   )r   r&   r'   r.     s    z'TestPanel.test_fillna.<locals>.<lambda>r$  r  r   r   r"  r_   r   )rK   rA   r   T)rD  inplacebfill)r+   r.  rV   Zisfiniter   r  rE   r   r%   r   r   r/   r0   r   r6   r   r   r   r]   r   r1   r  )r,   Zfilledr+   r   r   r2  r3  r&   )r   r'   test_fillna  sD    


 
$

$
zTestPanel.test_fillnac             C   s8   t | j | jjdd t | j | jjdd d S )Nr  )rD  r  )r   r+   r  r.  r  )r,   r&   r&   r'   test_ffill_bfill  s    

zTestPanel.test_ffill_bfillc             C   s"   | j jd d dd}|jdd d S )NrK   )r   r   rv   g        )value)r+   r   r.  )r,   r~   r&   r&   r'   test_truncate_fillna_bug   s    z"TestPanel.test_truncate_fillna_bugc             C   s   | j dd}|j| j jks t| j dd}|j| j jks@t| j dd}|j| j jks`t| j  }|dd}tj|j	d< |dd}t
|| | j dd}|j| j jkst| j dd}t
| j | t| j t|kstd S )NrK   r   r   )r   r   r5   r   r5   )r+   r'  rK   rA   rE   r@   r%   rV   r]   r   r   id)r,   r~   r+   r   r&   r&   r'   test_swapaxes'  s     

zTestPanel.test_swapaxesc          	   C   s  | j ddd}| j dd}t|| | j jdddd}| j dd}t|| | j jdddd}| j dd}t|| | j jdddd}| j dd}t|| tjtdd | j jdddd	 W d Q R X tjtd
d | j jddddd W d Q R X | j ddd}t|| | j ddd}| j dd}|dd}t|| | j ddd}t|| tt| j jddd d S )Nr   r   rK   )rK   r   r   )r   r   )r   znot enough/duplicate arguments)rx   )Zmajr   zrepeated axis in transposerk   r5   r   )r+   r  r'  r   r/   r0   r6   r   )r,   r~   r   r&   r&   r'   test_transpose@  s@    









zTestPanel.test_transposec             C   s`   | j  }|jddddd}|dd}|dd}t|| tj|jd	< t|jd
 s\t	d S )Nrk   r   r5   T)r%   rK   r   r   )r   r5   r5   )r5   r   r5   )
r+   r%   r  r'  r   rV   r]   r   r   rE   )r,   r+   r~   r   r&   r&   r'   test_transpose_copyn  s    

zTestPanel.test_transpose_copyc          	   C   s  | j  }| j  jdd}t|| | j jdd}t| | j  |jjdksTt| j jdd}|	t
jt|}| }t|| j  tt
jddddd	d	d
d
gddddddggddgd}ddg|j_d|j_|  }|jj|jjkst|jj|jjkstd S )Nr\   )howF)filter_observations)r   r   rq  rk   r   r"  r8   r   r5   r  r  )r   r   rB   r?  r@  )r+   r   dropnar   r   to_panelr   namesrE   r  rV   r   Zpermutationrh   r   r   r   rD   )r,   Zfilteredr   Z
unfilteredr   ZunsortedpanZrdfr&   r&   r'   test_to_framex  s&    

zTestPanel.test_to_framec             C   s   | j d}d|d< |d dk|d< | }| }|d jjtjksJtt	|d |d dd | }|d 
d|d< | }| }d|d< t|| d S )	Nr   rB   r|  r*   boolF)r  category)r+   r.  r   r  r   r   rV   r   rE   r   r   r%   r   )r,   r+   r   rH  r   r   r   r&   r&   r'   test_to_frame_mixed  s    zTestPanel.test_to_frame_mixedc             C   s  t ddddg}tdddgdddgd	d
dgdddggdddg|d}t||d}t jddddddddddddgd d dgd}tddddddd	d
ddddgddddddd	d
ddddgd|d }| }t|| tj|jd! jd"< | }t||dd   t dddtjd#fg}tdddgdddgd	d
dgdddggdddg|d}t||d}t jdddddddddtjd#dftjd#dftjd#dfgd d dgd}||_	| }t|| d S )$N)r5   r  )r5   r  )rk   r  )rk   r  r5   r   rk   r"  rg   r8   r   r   r   r   r  )r   r   )i1i2)r5   r  r   )r5   r  r   )r5   r  r  )r5   r  r   )r5   r  r   )r5   r  r  )rk   r  r   )rk   r  r   )rk   r  r  )rk   r  r   )rk   r  r   )rk   r  r  r   )r  )r   )r   r   r   r  )
r   r  r   r   r   r   rV   r]   r   r   )r,   r   r   rH  Zexpected_idxr   r~   Zex_idxr&   r&   r'   test_to_frame_multi_major  sZ    



z#TestPanel.test_to_frame_multi_majorc       	      C   s  t ddgddggddddgddddggd}t dd	d
dddg}tddddgddddgddddgddddgdddd gd!d"d#d$gg||d%}t||d&}t jd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>gd d d d gd?}ddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgd d gd!d!gd"d"gd#d#gd$d$gg}| }t|d@dAg|d%}t|| d S )BNC_AC_BC_1C_2r   r5   )levelscodes)r5   r  )r5   r  )rk   r  )rk   r  )rg   three)r   fourrk   r  r   rg   r         r   r"  wr_   r8   r   r   zr   r)  ri  iii)r   r   )r  r  )r5   r  r  r  )r5   r  r  r  )r5   r  r  r  )r5   r  r  r  )r5   r  r  r  )r5   r  r  r  )r5   r  r  r  )r5   r  r  r  )rk   r  r  r  )rk   r  r  r  )rk   r  r  r  )rk   r  r  r  )rk   r  r  r  )rk   r  r  r  )rk   r  r  r  )rk   r  r  r  )rg   r  r  r  )rg   r  r  r  )rg   r  r  r  )rg   r  r  r  )r   r  r  r  )r   r  r  r  )r   r  r  r  )r   r  r  r  )r  r  r  )r   r  r   r   r   r   )	r,   r  r   r   rH  exp_idxZexp_valr~   r   r&   r&   r'   test_to_frame_multi_major_minor  sF    

z)TestPanel.test_to_frame_multi_major_minorc             C   s~   t dddg}tdtjddgi|d}t||d}| }t jd	d
gd d dgd}tddgddgd|d}t|| d S )N)r5   r  )rk   r  )rk   r  r   r5   rk   )r   )r  r  )rk   r  r   )rk   r  r   r   )r  g      ?)r   r  r   rV   r]   r   r   r   )r,   r   r   rH  r~   r  r   r&   r&   r'   test_to_frame_multi_drop_level  s    z(TestPanel.test_to_frame_multi_drop_levelc             C   sz   t tjjdddddddddddddddg
ddddd	d
ddd	d
g
gd}| }t|d jdddgf  svt	d S )Nr   r$     )size)r$  rk   r5   rk   rg   r   r   )r   )
r   rV   r   rc  r   r  r   r   r  rE   )r,   r   r+   r&   r&   r'   test_to_panel_na_handling  s
    z#TestPanel.test_to_panel_na_handlingc          	   C   sV   t dddgdddgdddgd}|ddg}tjtdd	 |  W d Q R X d S )
Nr   r5   rk   rg   )r   r"  r8   r   r"  znon-uniquely indexed)rx   )r   Z	set_indexr/   r0   r   r  )r,   r   Zidfr&   r&   r'   test_to_panel_duplicates  s    "z"TestPanel.test_to_panel_duplicatesc             C   sL  t jddd}t|tdd}t|tdd}|d }|jd }t|| |d }|jd }t|| |jdd	g }ddg|_|jd }t	|| t jddd}t|tdd
}t|tdd
}|jd d df }|jd d df }t|| |jd d df }|jd d df }t|| |jd d dd	gf }ddg|_
|jd d df }t	|| t jddd}t|tdd}t|tdd}|jd d d d df }|jd d d d df }t|| |jd d d d df }|jd d d d df }t|| |jd d d d dd	gf }ddg|_|jd d d d df }t	|| d S )Nr   r^  r   )rK   ZAACDEr   r   r
  r   )r@   )rA   )rV   r   r   r   rJ   r   r   r   rK   r   r@   rA   )r,   r   Zno_dup_panelr+   r   r~   r&   r&   r'   test_panel_dups#  sN    













zTestPanel.test_panel_dupsc             C   s   d S )Nr&   )r,   r&   r&   r'   test_filter^  s    zTestPanel.test_filterc             C   s4   | j  }t|d d| j d  dd dd d S )Nr*   r5   r   F)r  )r+   Zcompoundr   product)r,   Z
compoundedr&   r&   r'   test_compounda  s    
zTestPanel.test_compoundc             C   s*  | j jd }| j jd }| j d}t| j ||| | j jd }| j jd }| j jddd}t| j ||| | j jd }| j jd }| j jddd}t| j | ||  | j d}tdd | j 	 D }t
|| d	d
 tdD }t|}tj|dd}|d}t|j|j d S )Nr   r5   r   )rv   rK   r   c             S   s$   i | ]\}}| d dd  |qS )r   N)shift)rX  r}   rS   r&   r&   r'   rY    s   z(TestPanel.test_shift.<locals>.<dictcomp>c             S   s   g | ]}d | t  fqS )zitem )r   )rX  Zchr&   r&   r'   ra    s   z(TestPanel.test_shift.<locals>.<listcomp>abcde)rf  )r+   r@   r  r   r   rA   r   rK   r   r   r   rJ   rl  rT  r   ro  )r,   r   Zidx_lagshiftedr~   r   r   Zmixed_panelr&   r&   r'   
test_shifth  s0    

zTestPanel.test_shiftc       	   	   C   s8  t  }|d}|d}t|| |jdd}t|| |jt d}t|| tjtdd |jdd W d Q R X t }|d}|d}t|| |j|j	j
d}t|| t|j|jtt|j	|jd}|d}|d}t||d t|| |jd d d	d
dgd d f }tt|j d S )Nr5   r   r   )r   zdoes not match)rx   M)rK   r@   rA   r   r   rr  )r#   ZmakePeriodPanelZtshiftr   r   r/   r0   r   r(   r@   r   r   r   rK   r   rV   rt   rA   r   )	r,   Zpsr  Z	unshiftedZshifted2Zshifted3r+   Zinferred_tsZno_freqr&   r&   r'   test_tshift  s2    













zTestPanel.test_tshiftc             C   sr  t dddgdddgd}|d }t dddgddd	gd}t|||d
}| }t| | | d
}t|| |jdd}t|| |jdd}t|d|d|dd
}t|| |jdd}t|jdd|jdd|jddd
}t|| |jdd}t|| |jddd}t|jddd|jddd|jdddd
}t|| |jdd}tt tjtjtjgtjtjtjgdt dddgdddgdt dddgdddgdd
}t|| |jdd}t|| |jddd}tt tjtjtjgtjtjtjgdt tjtjtjgtjtjtjgdt dddgdddgdd
}t|| d S )Nr5   rk   r   rg   r   rq  )Zc1Zc2rr  rs  )r  r  Zi3)rv   )r   r   )r   rv   rK   g      ?g?gUUUUUU?g      ?gUUUUUU?g$I$I?r   g?gUUUUUU?)r   r   Z
pct_changer   rV   r]   )r,   r  r   Zdf3rH  r~   r   r&   r&   r'   test_pct_change  s`    












zTestPanel.test_pct_changec             C   s   ddgddgddgddgd	d
ggddgddgddgddgddggg}dd |D }t |ddgtdddddgd}t |ddgtdddddgd}| }t|| d S )Ng	g@r   g IgCl@gHz^@g1xgQ8V@ig     W@gHzGg      @gףp=
@g rhQRgC,"gQ7@gZdq@g(\X   g      Sc             S   s   g | ]}d d |D qS )c             S   s   g | ]}d d |D qS )c             S   s   g | ]}t t|qS r&   )rM  rV   around)rX  r}   r&   r&   r'   ra    s    z>TestPanel.test_round.<locals>.<listcomp>.<listcomp>.<listcomp>r&   )rX  jr&   r&   r'   ra    s    z3TestPanel.test_round.<locals>.<listcomp>.<listcomp>r&   )rX  r   r&   r&   r'   ra    s   z(TestPanel.test_round.<locals>.<listcomp>r   r   z1/1/2000r   )r   r   r   )rK   r@   rA   )r   r   roundr   )r,   r   evaluesr   r   r~   r&   r&   r'   
test_round  s    



zTestPanel.test_roundc          	   C   s   ddgddgddgddgd	d
ggddgddgddgddgddggg}dd |D }t |ddgtdddddgd}t |ddgtdddddgd}t|}t|| d}tjt|d  tj||d! W d Q R X d S )"Ng	g@r   g IgCl@gHz^@g1xgQ8V@ig     W@gHzGg      @gףp=
@g rhQRgC,"gQ7@gZdq@g(\Xr  g      Sc             S   s   g | ]}d d |D qS )c             S   s   g | ]}d d |D qS )c             S   s   g | ]}t t|qS r&   )rM  rV   r  )rX  r}   r&   r&   r'   ra    s    zDTestPanel.test_numpy_round.<locals>.<listcomp>.<listcomp>.<listcomp>r&   )rX  r  r&   r&   r'   ra    s    z9TestPanel.test_numpy_round.<locals>.<listcomp>.<listcomp>r&   )rX  r   r&   r&   r'   ra    s   z.TestPanel.test_numpy_round.<locals>.<listcomp>r   r   z1/1/2000r   )r   r   r   )rK   r@   rA   z$the 'out' parameter is not supported)rx   )r+  )r   r   rV   r  r   r/   r0   r   )r,   r   r  r   r   r~   r   r&   r&   r'   test_numpy_round  s"    





zTestPanel.test_numpy_roundz&ignore:Using a non-tuple:FutureWarningc             C   s   t jddddgddgd}ttjd|td	td	d
}|d }|jd }t|| |jddgk	 spt
|jddgk	 st
t jdddgddgd d S )N)r   r5   )r   rk   )r"  r5   )r"  rk   firstsecond)r  )r   r   r   r   )rK   r@   rA   r   r5   rk   )r   r  r   rV   r   r   r   r   rK   r  rE   )r,   indrH  f1f2r&   r&   r'   test_multiindex_get  s    


zTestPanel.test_multiindex_getc             C   sn   t jdddgddgd}t| jj}||_|d }|jdd	gk sHt|d }|jd
dddgk sjtd S )N)r   r5   )r   rk   )r"  r5   r  r  )r  r   r5   rk   r   r   r  r   )	r   r  r   r+   rG  rK   r  rE   r   )r,   r  rH  r  r&   r&   r'   test_multiindex_blocks!  s    z TestPanel.test_multiindex_blocksc             C   s   t  }t| d S )N)r   r>   )r,   r   r&   r&   r'   test_repr_empty-  s    zTestPanel.test_repr_emptyzignore:Using:FutureWarningc             C   s   dddd}| j j|d}tdddg}t|j| | j jtjd}tddd	d
g}t|j| | j j|dd}d|d< | j d j	dk
 std S )NrB   r?  r@  )r*   r   r   )rK   )rA   r   r"  r8   r   F)rK   r%   g      @r*   rg   )r+   renamer   r#   rZ  rK   r|  lowerrA   r   r  rE   )r,   ZmapperZrenamedexpZrenamed_nocopyr&   r&   r'   test_rename2  s    zTestPanel.test_renamec             C   s`   t | jd | jj | jd | jd< t | jd | jj | jd | jd< t | jd | jj d S )Nr*   r   r}   )r   r+   r*   r   r}   )r,   r&   r&   r'   test_get_attrC  s
    zTestPanel.test_get_attrc             C   sX   dddddg}t |}ttjdd|d}| }t|d	|j	d	d
d
  d S )N)MSFTrg   )r  rk   )AAPLrk   )r  r5   )r  r5   r   r   )r   rk   r5   )level)r   r  r   rV   r   r  r  r   r   r   r  )r,   ZtuplesZmidxr   r   r&   r&   r'   test_from_frame_level1_unsortedL  s    
z)TestPanel.test_from_frame_level1_unsortedc          
   C   s   y(dd l }dd l}dd l}ddlm} W n tk
rF   td Y nX xdD ]}td| r}| j	
| y||}W n tk
r   td Y nX x2| j	 D ]$\}}	|jt|dd}
t|	|
 qW W d Q R X qNW d S )Nr   )	ExcelFilezneed xlwt xlrd openpyxl)ZxlsZxlsxz__tmp__.)	index_col)xlwtxlrdopenpyxlpandas.io.excelr  ImportErrorr/   skipr   r+   to_excelr   parser|  r   )r,   r  r  r  r  Zextpathreaderr   r   recdfr&   r&   r'   test_to_excelT  s"    
zTestPanel.test_to_excelc       
      C   s   y dd l }dd l}ddlm} W n tk
r>   td Y nX td}| jj	|dd y||}W n0 tk
r } ztd|  W d d }~X Y nX x2| j
 D ]$\}}|jt|dd}	t||	 qW W d Q R X d S )	Nr   )r  z,Requires xlrd and xlsxwriter. Skipping test.z__tmp__.xlsx
xlsxwriter)Zenginezcannot write excel file: %s)r  )r  r  r  r  r  r/   r  r   r+   r  r   r  r|  r   )
r,   r  r  r  r  r  rt  r   r   r  r&   r&   r'   test_to_excel_xlsxwriteri  s    
 z"TestPanel.test_to_excel_xlsxwriterzignore:'.reindex:FutureWarningc             C   s  t tjdddtdd}tj|jd d ddgdf< |jd	d
}|jd d dddgd d f }t|| |	 }|jd	dd t|| |jd	dd}t|| tj|jd d ddgd d f< |jd	dd}|jd d dddgd d f }t|| t tjdddtdd}tj|jdgd d df< | }|jdddg }t|| |jdd}t|| tj|jd< |jdd}|jdddg }t|| d S )Nr   r   rq  r  )r@   r"  r   r   r5   )rv   r   r8   rt  T)rv   r  r  )rv   r  Zabcd)rK   )r  )
r   rV   r   r   rJ   r]   r   r  r   r%   )r,   r   r~   r  Zinpr&   r&   r'   test_dropna|  s2    





zTestPanel.test_dropnac                sh  t ddgddgd}t||d  fdd}td	|i}|d
ddg| tt jd  jddd}t|   jd
dgdd}td	|i}t|| t dgdgddgd}t||d}|ddddg| t dgdgddgd}t||d}|dgdddg| |dg }t||d}|dgdddg| |dg }t||d}|ddddg| d S )Nr5   rk   rg   r   )r   r   )OneTwoc                sn   yB j | |d}t|| x$|D ]} j | |d}t|| q W W n& tk
rh   td||f   Y nX d S )N)rv   z*Failed with axis_number %d and aliases: %s)dropr   rE   r   )Zdrop_valZaxis_numberaliasesr   Zactualalias)r+   r&   r'   
check_drop  s    

z'TestPanel.test_drop.<locals>.check_dropr  r  r   rK   ZThreer!   )errors)r   r@   r   r   r   rA   r   )r   r   r/   r0   KeyErrorr  r   )r,   r   r  r   ZdroppedZexp_dfr&   )r+   r'   	test_drop  s.    



zTestPanel.test_dropc             C   s   t dtjdgdtjdgdtjdgdtjdggdtjdgdtjdgdtjdgdtjdggg}t ddtjgtjtjdgggdgd}|| t dtjdgdtjdgdtjdgdtjdggdddgdtjdgdtjdgdtjdggg}t|| d S )	Ng      ?g      @g@g       @rr  r5   )rK   rg   )r   rV   r]   updater   )r,   r  otherr   r&   r&   r'   test_update  s    

$

zTestPanel.test_updatec          	   C   s  t tdtjdgdtjdgdtjdgdtjdggtdtjdgdtjdgdtjdgdtjdggd}dtddtjgtjtjdggi}|| t tdtjdgdtjdgdtjdgdtjdggtdddgdtjdgdtjdgdtjdggd}t|| d S )	Ng      ?rg   g      @)r  r  r  g@g       @rr  )r   r   rV   r]   r   r   )r,   r  r  r   r&   r&   r'   test_update_from_dict  s*    









zTestPanel.test_update_from_dictc             C   s   t dtjdgdtjdgdtjdgdtjdggdtjdgdtjdgdtjdgdtjdggg}t ddtjgtjtjdgggdgd}|j|dd	 t dtjd
gdtjd
gdtjdgdtjdggdddgdtjdgdtjdgdtjdggg}t|| d S )Ng      ?g      @g@g       @rr  r5   )rK   F)Z	overwriterg   )r   rV   r]   r   r   )r,   r  r  r   r&   r&   r'   test_update_nooverwrite  s    

$
z!TestPanel.test_update_nooverwritec             C   s   t dtjdgdtjdgdtjdgdtjdggdtjdgdtjdgdtjdgdtjdggg}t ddtjgtjtjdgggdgd}|j|dd	 d
 t dtjdgdtjdgdtjdgdtjdggdtjdgdtjdgdtjdgdtjdggg}t|| d S )Ng      ?g      @g@g       @rr  r5   )rK   c             S   s   | dkS )Nrk   r&   )r_   r&   r&   r'   r.   	  s    z0TestPanel.test_update_filtered.<locals>.<lambda>)Zfilter_funcrg   )r   rV   r]   r   r   )r,   r  r  r   r&   r&   r'   test_update_filtered	  s    

$zTestPanel.test_update_filteredzbad_kwarg, exception, msgr  Z	somethingzThe parameter errors must.*joininnerzOnly left join is supportedc          	   C   s@   t dtjdggg}tj||d |j|f| W d Q R X d S )Ng      ?g      @)rx   )r   rV   r]   r/   r0   r   )r,   Z	bad_kwargZ	exceptionr   r  r&   r&   r'   test_update_raise_bad_parameter(	  s    z)TestPanel.test_update_raise_bad_parameterc          	   C   s   t dtjdgdtjdgdtjdgdtjdggdtjdgdtjdgdtjdgdtjdggg}tjtdd |j|dd W d Q R X d S )Ng      ?g      @zData overlaps)rx   raise)r  )r   rV   r]   r/   r0   r   r   )r,   r  r&   r&   r'   test_update_raise_on_overlap2	  s    

z&TestPanel.test_update_raise_on_overlapraise_conflictTFc          	   C   sH   t dtjdggg}t g gg}tt |j||d W d Q R X d S )Ng      ?g      @)r  )r   rV   r]   r#   r   r"   r   )r,   r  r  r  r&   r&   r'   test_update_deprecation=	  s    z!TestPanel.test_update_deprecationc             C   s   | j jddjt| j ddk s&t| j jddjt| j ddjk sNt| j jddjt| j ddjk svt| j jddjt| j ddk st| j jddjt| j ddjk st| j jddjt| j ddjk std S )Nr   )rv   r5   rk   )r+   r  r   r   rE   r  r\   r   )r,   r&   r&   r'   test_all_anyD	  s    zTestPanel.test_all_anyc             C   s,   t jt| jjdd t jt| jjdd d S )NT)Z	bool_only)r/   r0   r1   r+   r  r\   )r,   r&   r&   r'   test_all_any_unhandledR	  s    z TestPanel.test_all_any_unhandledc             C   s&   t t| jj t t| jjd d S )Nr*   )r/   r0   r1   r+   r&  )r,   r&   r&   r'   test_sort_valuesW	  s    zTestPanel.test_sort_valuesN)Mr:   r;   r<   rE  rJ  rN  rO  rQ  rU  rV  rW  r\  r]  rd  re  rg  rh  rj  rn  rp  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zparametrizer   r1   r  r
  r  r  r  r  r&   r&   r&   r'   rC  u  s   ,+	1
6M/.2.
3&;#&8	#.rC  c               @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(S ))TestPanelFramezE
    Check that conversions to and from Panel to DataFrame work.
    c             C   s"   t  }| | _|jdd| _d S )NF)r  )r(   r   r+   Zunfiltered_panel)r,   rD  r+   r&   r&   r'   rE  b	  s    
zTestPanelFrame.setup_methodc             C   sz   | j  }|j|jd d d}| }| j | }t||j|d  |d | j d< t| j d |j|d dd d S )Nr   )r   rk   r*   rB   F)r  )r+   r  r   r@   r   r   r   r   )r,   rH  r[  lp2r~   r&   r&   r'   test_ops_differently_indexedg	  s    

z+TestPanelFrame.test_ops_differently_indexedc             C   s(   | j d}t| j d}t|| d S )Nrk   )r+   r   r   __mul__r   )r,   r~   r   r&   r&   r'   test_ops_scalarv	  s    zTestPanelFrame.test_ops_scalarc             C   s@   | j  }| j j|d  dd}t| d |d d  d S )Nr*   r   )rv   rk   )r+   r  r   stackr   )r,   rH  r~   r&   r&   r'   r   {	  s    
z TestPanelFrame.test_combineFramec             C   sP   | j  }| j | j }| }t|d d |d  | j | j dg}d S )Nr*   rk   )r+   r  r   r   r   )r,   rH  r~   Zwide_resultr&   r&   r'   r   	  s
    
z TestPanelFrame.test_combinePanelc             C   s*   | j d}t| j jd }t|| d S )Nrk   )r+   r   r   rG  r   )r,   r~   r   r&   r&   r'   test_combine_scalar	  s    z"TestPanelFrame.test_combine_scalarc             C   st   | j d d d }| j j|dd}tj| j |dd}t|| | j jd }| j | }tj| j |dd}t|| d S )Nr*   r$  r   )rv   r   r5   )r+   r   r   r   r   )r,   rN   r~   r   r&   r&   r'   test_combine_series	  s    

z"TestPanelFrame.test_combine_seriesc             C   s2   | j  }| j d  }t|d d |d  d S )Nr5   r*   )r+   r  r   )r,   rH  r~   r&   r&   r'   test_operators	  s    
zTestPanelFrame.test_operatorsc       	         s   ddddddddg}t js i }nddi}| j | _xtjd	d
tjdddgD ]}x|D ]z}|||}tt	|  | j|}t| j||}t
||dd  fdd}|| j|}t| jd| |}t
|| q^W qTW d S )Nr   r   r   r   r   r   r   r   ir   r5   r_  r   T)Zcheck_panel_typec                s
    || S )Nr&   )r_   r   )rS   r&   r'   r.   	  s    z6TestPanelFrame.test_arith_flex_panel.<locals>.<lambda>r  )r   r   r+   r  rV   r   rc  getrC   r   r   )	r,   r   r  nr   r  r  r~   Zr_fr&   )rS   r'   test_arith_flex_panel	  s"    $

z$TestPanelFrame.test_arith_flex_panelc             C   sN   dd }| j jdd}||jjd s*t|jdd}||jjd sJtd S )Nc             S   s   | dd  | d d k  S )Nr5   r   )r\   )Zarrr&   r&   r'   	is_sorted	  s    z+TestPanelFrame.test_sort.<locals>.is_sortedr5   )r  r   )r+   r  r   r  rE   )r,   r  Zsorted_minorZsorted_majorr&   r&   r'   	test_sort	  s
    zTestPanelFrame.test_sortc             C   s   t  }| j| d S )N)r   r+   Z	to_string)r,   Zbufr&   r&   r'   test_to_string	  s    zTestPanelFrame.test_to_stringc          	   C   s6   t | jtr2d}tjt|d | jj W d Q R X d S )Nzsparsifying is not supported)rx   )rA  r+   r   r/   r0   r1   Z	to_sparse)r,   r   r&   r&   r'   test_to_sparse	  s    zTestPanelFrame.test_to_sparsec             C   s\  | j jjd }|d |d  }}| j || }| j  d ||}t|d |dd | j j|d }| j  d j|d}t|d |dd | j j|d }| j  d j|d}t|d |dd | j  }|jd d d }|j|d	}| }	|	|jd
 |jd }
||jd
 |jd }t	||
  t
t|	j|jd |jd
  d S )Nr   r5   r   r*   F)r  )r   )r   )r   rk   r)  )r+   r   r  r   r  r   r@   r   r   r   r/   r0   r{   )r,   r   r   r   r   r   rH  Z	new_indexr[  r  Zlp_truncZwp_truncr&   r&   r'   r   	  s(    
zTestPanelFrame.test_truncatec             C   s   ddl m} || jdtj}t|jt| jjj	d ks@t
|| jdtj}t|jt| jjj	d kstt
ddddd}|| jd|jd	tj}t|jd
kst
t|jtddg d S )Nr   )make_axis_dummiesr   r5   r   r  r  )r   r   r  r   )Z	transformrk   )pandas.core.reshape.reshaper   r+   r   rV   uint8rh   r   r   r  rE   r  r#   rZ  r   )r,   r   minor_dummiesZmajor_dummiesmappingZtransformedr&   r&   r'   test_axis_dummies	  s      z TestPanelFrame.test_axis_dummiesc             C   sZ   ddl m}m} | jjjd | jd< || jdtj}|| jd }t	
|j|j d S )Nr   )get_dummiesr   r5   ZLabelr   )r!  r&  r   r+   r   r  r   rV   r"  r#   r1  r   )r,   r&  r   r#  Zdummiesr&   r&   r'   test_get_dummies
  s
    zTestPanelFrame.test_get_dummiesc             C   s,   | j jdd}| j  d}t|| d S )Nr   )r  r   )r+   rX   r  r   )r,   ZmeansZ
wide_meansr&   r&   r'   rY   

  s    zTestPanelFrame.test_meanc             C   s,   | j jdd}| j  d}t|| d S )Nr   )r  r   )r+   rM   r  r   )r,   ZsumsZ	wide_sumsr&   r&   r'   rW   
  s    zTestPanelFrame.test_sumc             C   s   | j j}| j jddd }|jd }x2t|jd D ] \}}|| ||k ks4tq4W | j jddd }|jd }x2t|jd D ] \}}|| ||k kstqW d S )Nr   )r  r*   r5   )r+   r   rO   r  r  r  rM   rE   )r,   r   Zmajor_countZlevel_codesr}   r   Zminor_countr&   r&   r'   rT   
  s    

zTestPanelFrame.test_countc             C   sZ   | j ddg}| j dg}||}t|jdks:ttt|j| j ddg d S )Nr*   r   r   rg   )	r+   r   r  rh   r   rE   r/   r0   r{   )r,   Zlp1r  Zjoinedr&   r&   r'   	test_join%
  s    

zTestPanelFrame.test_joinN)r:   r;   r<   __doc__rE  r  r  r   r   r  r  r  r  r  r  r  r   r%  r'  rY   rW   rT   r(  r&   r&   r&   r'   r  \	  s(   	
'r  c              C   s^   t ddddgdddg} tjtddddgdtdddgdgddgd}t| | d S )Nr5   rk   rg   r   Ztimer+   )r  )	panelmZpanel_indexr   Zfrom_arraysrV   Ztilerepeatr#   rZ  )r   r   r&   r&   r'   test_panel_index1
  s
    r,  c              C   s8   t dtdddgii} t| }|tdks4td S )Nr   r"  r5   rk   T)r   r   rV   r  r   rE   )rH  r~   r&   r&   r'   test_panel_np_all9
  s    
r-  )Ar   r   warningsr   r   ZnumpyrV   r/   Zpandas.compatr   r   r   r   r	   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandas.core.dtypes.commonr
   r%  r   r   r   r   r   r   r   r   Zpandas.core.nanopsr   r   Zpandas.core.panelZcorer+   r*  r   Zpandas.util.testingZtestingr#   r   r   r   r   r   r   r`  r   Zpandas.io.formats.printingr   Zpandas.tseries.offsetsr   r   r(   r   r   r  r)   r=   r   r   rC  r  r,  r-  r&   r&   r&   r'   <module>   s^   ($	x w   I           p U