3
Ud1                 @   sL   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	 G dd de	Z
dS )    N)ExtensionBlock   )BaseExtensionTestsc               @   sh  e Zd ZdZejjdddgdd Zejjdddg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ejjd#d$d%gejjd<d=gd(d)gd*gd+d, Zejjd-ejjd$d%gd&d'ggd&d'gd*ejjd>d?d@gejjdAdBdCgejjdDdEdFdGdHggejjd2d3d4gd5d6 Zd7d8 Zd9d: Zd;S )IBaseReshapingTestsz&Tests for reshaping and concatenation.in_frameTFc             C   s   t j|}|rt j|}t j||gdd}t|t|d ksBt|rR|jd }n|j}||jksftt|j	j
d ts|td S )NT)ignore_index   r   )pdSeries	DataFrameconcatlenAssertionErrordtypesdtype
isinstanceZ_mgrblocksr   )selfdatar   wrappedresultr    r   Y/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/extension/base/reshaping.pytest_concat   s    

zBaseReshapingTests.test_concatc             C   s   t j|jddgddgd}t j|jddgddgd}|rXt jd|i}t jd|i}t j||g}|rt jd|jddddgi}| j|| n$t j|jddddg}| j|| d S )Nr   r   )indexr      a)r	   r
   taker   r   assert_frame_equalassert_series_equal)r   Zdata_missingr   Zvalid_blockZna_blockr   expectedr   r   r   test_concat_all_na_block    s    z+BaseReshapingTests.test_concat_all_na_blockc             C   s4  t jd|d d i}t jddddgi}t jddddgijd}|||g}t j|}t jd	d
 |D }| j|| t jdd
 |D }t jdd
 |D }| j|| t j||jtg}t j|jd|jdg}| j|| t j|d |d jtg}t j|d jd|d jdg}| j|| d S )NAr   r   r   r   bccategoryc             S   s   g | ]}|j tqS r   )astypeobject).0xr   r   r   
<listcomp>8   s    z?BaseReshapingTests.test_concat_mixed_dtypes.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r"   r   )r(   r)   r   r   r   r*   <   s    c             S   s   g | ]}|d  j tqS )r"   )r&   r'   )r(   r)   r   r   r   r*   =   s    r'   )r	   r   r&   r   r   r   r'   )r   r   df1df2Zdf3dfsr   r    r   r   r   test_concat_mixed_dtypes/   s     

"z+BaseReshapingTests.test_concat_mixed_dtypesc             C   s*  t jd|d d i}t jddddgi}t j|d d dddgd}t j||gdd}| j|| t j|d |d gdd}| j|| t jddddgidddgd}t j|jt|d d |g |jd	tjdddgd}t j||gdd}| j|| t j|d |d gdd}| j|| d S )
Nr"   r   Br   r   )r"   r/   )axis)r   )r   )	r	   r   r   r   _from_sequencelistr   npnan)r   r   na_valuer+   r,   r    r   r   r   r   test_concat_columnsI   s     z&BaseReshapingTests.test_concat_columnsc             C   s   t jd|d d i}t jd|dd i}t j|jt|d d |g |jd|dd d}t j||gddd	}| j|| d S )
Nr"   r   r/      )r   )r"   r/   r   F)r0   copy)r	   r   r1   r2   r   r   r   )r   r   r5   r+   r,   r    r   r   r   r   'test_concat_extension_arrays_copy_falsea   s     z:BaseReshapingTests.test_concat_extension_arrays_copy_falsec             C   s   t jd|d d i}t jd|d d i}t j||gdd}t j|jttdd	gd  dd|jd
gd ttd ddd}| j|| d S )Nr      r#   T)r   r   )Z
allow_fill)r   r#   r;   )r	   r   r   r   r2   ranger   )r   r   r   r#   r   r    r   r   r   test_concat_with_reindexn   s    &z+BaseReshapingTests.test_concat_with_reindexc       	      C   s   |d d }|dd }t j|jt j|dddgd\}}t j|jt||g |jd}t j|j|gt| |jd}| j|| | j|| d S )Nr   r   r:   r   )r   )r   )r	   r
   alignr1   r2   r   r   )	r   r   r5   r   r#   r1r2e1e2r   r   r   
test_align{   s    $  zBaseReshapingTests.test_alignc       	      C   s   |d d }|dd }t jd|ijt jd|idddgd\}}t jd|jt||g |jdi}t jd|j|gt| |jdi}| j|| | j|| d S )Nr   r   r:   r"   r   )r   )r   )r	   r   r>   r1   r2   r   r   )	r   r   r5   r   r#   r?   r@   rA   rB   r   r   r   test_align_frame   s    ,  z#BaseReshapingTests.test_align_framec             C   sz   t j|dd}t jdtjt|d i}|j|\}}t j|jt||g |j	d|j
d}| j|| | j|| d S )Nr   )namecolr   )r   )r	   r
   r   r3   Zaranger   r>   r1   r2   r   rE   r   r   )r   r   r5   serdfr?   r@   rA   r   r   r   test_align_series_frame   s    
z*BaseReshapingTests.test_align_series_framec             C   sJ   t jddgt| i}||d< t jdgt| |d}| j|| d S )Nr"   r   r/   )r"   r/   )r	   r   r   r   )r   r   rH   r    r   r   r   ,test_set_frame_expand_regular_with_extension   s    z?BaseReshapingTests.test_set_frame_expand_regular_with_extensionc             C   sJ   t jd|i}dgt| |d< t j|dgt| d}| j|| d S )Nr"   r   r/   )r"   r/   )r	   r   r   r   )r   r   rH   r    r   r   r   ,test_set_frame_expand_extension_with_regular   s    z?BaseReshapingTests.test_set_frame_expand_extension_with_regularc             C   s<   t jddgt| itd}||d< |jd |jks8td S )Nr"   r   )r   )r	   r   r   r'   r   r   r   )r   r   rH   r   r   r   test_set_frame_overwrite_object   s    z2BaseReshapingTests.test_set_frame_overwrite_objectc          
   C   s6  t j|d d dddgdddgd}t jddddgddddgd}t j||}t jdddgdddgdddg|j|d |d |d g|jdd	}| j||d
dddg  t j||dd}t jddddtjgdddtjdgdddddg|j|d |d |d |d |g|jdd	}| j||d
dddg  d S )Nr   r   r   r   )extint1key   )int2rO   )r   )rN   rQ   rO   rM   rM   rN   rO   rQ   outer)how)r	   r   merger1   r   r   r3   r4   )r   r   r5   r+   r,   resexpr   r   r   
test_merge   s$    & $,zBaseReshapingTests.test_mergec             C   s   |d d \}}t |j||g|jd}tj|ddgd}tj||dd}tj|ddgddgd}| j|| tj|jddg |dd}|jddg jd	d
}| j|| d S )Nr   )r   r   )rO   valrO   )on)rO   val_xval_yr   T)Zdrop)	typer1   r   r	   r   rT   r   ilocZreset_index)r   r   r   r#   rO   rH   r   r    r   r   r   test_merge_on_extension_array   s    z0BaseReshapingTests.test_merge_on_extension_arrayc       	      C   s   |d d \}}t |j|||g|jd}tj|dddgd}tj|dddgd}tj||dd}tj|jdddddgdddddgdddddgd	}| j|| d S )
Nr   )r   r   r   )rO   rX   rO   )rY   r   )rO   rZ   r[   )r\   r1   r   r	   r   rT   r   r   )	r   r   r   r#   rO   r+   r,   r   r    r   r   r   (test_merge_on_extension_array_duplicates   s    z;BaseReshapingTests.test_merge_on_extension_array_duplicatescolumnsr"   r/   r   r#   rR   inner)namesc             C   s   t j|d d |d d d}||_|j }|jtj }|jt}t|t jrr|j|j	d d df jkst
n"t|j|j	d d df jkst
|jt}| j|| d S )Nr:   )r"   r/   r   )r	   r   r`   stackr&   r'   r   r
   r   r]   r   allr   Zassert_equal)r   r   r`   rH   r   r    r   r   r   
test_stack   s    
 
 "
zBaseReshapingTests.test_stackr   r$   r   r   r   objseriesframec                s   d t |  |dkr(tj |d}ntj  d|d}|j}tt|tjj	fddtd|D }x|D ]}|j
|dt fddjD st|dkr|j }|j
|djd	dd
}	| j|	 |jtj
|d}
jt| j|
 qtW d S )Nrg   )r   )r"   r/   c             3   s   | ]}t j |V  qd S )N)	itertoolspermutations)r(   i)levelsr   r   	<genexpr>/  s    z2BaseReshapingTests.test_unstack.<locals>.<genexpr>r   )levelc             3   s"   | ]}t | jt V  qd S )N)r   arrayr\   )r(   rF   )r   r   r   r   rm   5  s    r   )r0   )r   r	   r
   r   Znlevelsr2   r<   ri   chainfrom_iterableZunstackrd   r`   r   Zto_frameZ	droplevelr   r&   r'   )r   r   r   rf   rG   ncombinationsrn   rH   Zaltr    r   )r   rl   r   r   test_unstack  s&    

zBaseReshapingTests.test_unstackc             C   s@   |j  }t|t|kst|d |d< |d |d ks<td S )Nr   r   )Zravelr\   r   )r   r   r   r   r   r   
test_ravelD  s    zBaseReshapingTests.test_ravelc             C   s  t j|d d |d d dddddgd}|j}t jt|j|d gd	 |jd
t|j|d gd	 |jd
t|j|d	 gd	 |jd
t|j|d gd	 |jd
dddgd}| j|| | jtjtj|| | jtjtj|dg |dg  d S )NrP   )r"   r/   r   r#   r$   d)r   r   r   )r   r   r   )r   r#   r$   rv   r"   r/   )	r	   r   Tr\   r1   r   r   r3   Z	transpose)r   r   rH   r   r    r   r   r   test_transposeM  s    , z!BaseReshapingTests.test_transposeN)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   )__name__
__module____qualname____doc__pytestmarkZparametrizer   r!   r.   r6   r9   r=   rC   rD   rI   rJ   rK   rL   rW   r^   r_   r	   Z
MultiIndexfrom_tuplesre   Zfrom_productrt   ru   rx   r   r   r   r   r      sF   
"	r   )ri   Znumpyr3   r}   Zpandasr	   Zpandas.core.internalsr   baser   r   r   r   r   r   <module>   s   