B
    Y0dp7                 @   sl   d dl Z d dlZd dlZd dlmZmZmZ d dlZ	d dl
mZ d dlmZ d dlmZ G dd deZdS )    N)is_datetime64tz_dtypeis_interval_dtypeis_period_dtype)ExtensionArray)ExtensionBlock)BaseExtensionTestsc               @   sp  e Zd ZdZejdddgdd Ze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d#d$d%gejjd&d'gd(d)gd*gd+d, Zejd-ejjd$d%gd.d/ggd.d/gd*ejd&d'd0gejd1d2d3gejd4d5d6d7d8ggejd9d:d;gd<d= Zd>d? Zd@dA ZdBdC ZdDS )EBaseReshapingTestsz&Tests for reshaping and concatenation.in_frameTFc             C   s   t |}|rt |}t j||gdd}t|t|d ksBt|rR|jd }n|j}||jksftt|j	drt
|j	jd tstt
|j	jd tstd S )NT)ignore_index   r   blocks)pdSeries	DataFrameconcatlenAssertionErrordtypesdtypehasattrZ_mgr
isinstancer   r   Zarraysr   )selfdatar	   wrappedresultr    r   W/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/extension/base/reshaping.pytest_concat   s    

zBaseReshapingTests.test_concatc          	   C   s   t j|ddgddgd}t j|ddgddgd}|rXt d|i}t d|i}t ||g}|rt d|ddddgi}| || n$t |ddddg}| || d S )N   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 d|d d i}t ddddgi}t ddddgid}|||g}t |}t d	d
 |D }| || t dd
 |D }t dd
 |D }| || t ||tg}t |d|dg}| || t |d |d tg}t |d d|d dg}| || d S )NAr    r   r   r!   bccategoryc             S   s   g | ]}| tqS r   )astypeobject).0xr   r   r   
<listcomp>@   s    z?BaseReshapingTests.test_concat_mixed_dtypes.<locals>.<listcomp>c             S   s   g | ]}|d  qS )r'   r   )r-   r.   r   r   r   r/   D   s    c             S   s   g | ]}|d   tqS )r'   )r+   r,   )r-   r.   r   r   r   r/   E   s    r,   )r   r   r+   r   r#   r$   r,   )r   r   df1df2Zdf3dfsr   r%   r   r   r   test_concat_mixed_dtypes7   s     

"z+BaseReshapingTests.test_concat_mixed_dtypesc             C   s*  t d|d d i}t ddddgi}t |d d dddgd}t j||gdd}| || t j|d |d gdd}| || t jddddgidddgd}t |jt|d d |g |jd	tjdddgd}t j||gdd}| || t j|d |d gdd}| || d S )
Nr'   r    Br   r   )r'   r4   )axis)r   )r   )	r   r   r   r#   _from_sequencelistr   npnan)r   r   na_valuer0   r1   r%   r   r   r   r   test_concat_columnsQ   s     z&BaseReshapingTests.test_concat_columnsc             C   s   t d|d d i}t d|dd i}t |jt|d d |g |jd|dd d}t j||gddd	}| || d S )
Nr'   r    r4      )r   )r'   r4   r   F)r5   copy)r   r   r6   r7   r   r   r#   )r   r   r:   r0   r1   r%   r   r   r   r   'test_concat_extension_arrays_copy_falsei   s     z:BaseReshapingTests.test_concat_extension_arrays_copy_falsec             C   s   t d|d d i}t d|d d i}t j||gdd}t |jttddgd  dd|jdgd ttd ddd}| || d S )	Nr!      r(   T)r
   )Z
allow_fill)r!   r(   )r   r   r   r"   r7   ranger#   )r   r   r!   r(   r   r%   r   r   r   test_concat_with_reindexv   s    &z+BaseReshapingTests.test_concat_with_reindexc       	      C   s   |d d }|dd }t |t j|dddgd\}}t |jt||g |jd}t |j|gt| |jd}| || | || d S )Nr    r   r?   r   )r   )r   )r   r   alignr6   r7   r   r$   )	r   r   r:   r!   r(   r1r2e1e2r   r   r   
test_align   s    $  zBaseReshapingTests.test_alignc       	      C   s   |d d }|dd }t d|it jd|idddgd\}}t d|jt||g |jdi}t d|j|gt| |jdi}| || | || d S )Nr    r   r?   r'   r   )r   )r   )r   r   rC   r6   r7   r   r#   )	r   r   r:   r!   r(   rD   rE   rF   rG   r   r   r   test_align_frame   s    ,  z#BaseReshapingTests.test_align_framec             C   sz   t j|dd}t dtt|d i}||\}}t j|jt||g |j	d|j
d}| || | || d S )Nr!   )namecolr   )r   )r   r   r   r8   Zaranger   rC   r6   r7   r   rJ   r$   r#   )r   r   r:   serdfrD   rE   rF   r   r   r   test_align_series_frame   s    
z*BaseReshapingTests.test_align_series_framec             C   sJ   t ddgt| i}||d< t dgt| |d}| || d S )Nr'   r   r4   )r'   r4   )r   r   r   r#   )r   r   rM   r%   r   r   r   ,test_set_frame_expand_regular_with_extension   s    z?BaseReshapingTests.test_set_frame_expand_regular_with_extensionc             C   sJ   t d|i}dgt| |d< t |dgt| d}| || d S )Nr'   r   r4   )r'   r4   )r   r   r   r#   )r   r   rM   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   rM   r   r   r   test_set_frame_overwrite_object   s    z2BaseReshapingTests.test_set_frame_overwrite_objectc             C   s6  t |d d dddgdddgd}t ddddgddddgd}t ||}t dddgdddgdddg|j|d |d |d g|jdd	}| ||d
dddg  t j||dd}t 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	}| ||d
dddg  d S )Nr    r   r   r   )extint1key   )int2rT   )r   )rS   rV   rT   rR   rR   rS   rT   rV   outer)how)r   r   merger6   r   r#   r8   r9   )r   r   r:   r0   r1   resexpr   r   r   
test_merge   s$    & $,zBaseReshapingTests.test_mergec             C   s   |d d \}}t |j||g|jd}t|ddgd}tj||dd}t|ddgddgd}| || tj|jddg |dd}|jddg jd	d
}| || d S )Nr   )r   r   )rT   valrT   )on)rT   val_xval_yr   T)Zdrop)	typer6   r   r   r   rY   r#   ilocZreset_index)r   r   r!   r(   rT   rM   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|dddgd}t|dddgd}tj||dd}t|dddddgdddddgdddddgd	}| || d S )
Nr   )r   r   r    )rT   r]   rT   )r^   r   )rT   r_   r`   )ra   r6   r   r   r   rY   r"   r#   )	r   r   r!   r(   rT   r0   r1   r   r%   r   r   r   (test_merge_on_extension_array_duplicates   s    z;BaseReshapingTests.test_merge_on_extension_array_duplicatescolumnsr'   r4   )r'   r!   )r'   r(   rW   inner)namesc             C   s   t |d d |d d d}||_| }|t }|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
|t}| || d S )Nr?   )r'   r4   r   )r   r   re   stackr+   r,   r   r   r   rb   r   allr   Zassert_equal)r   r   re   rM   r   r%   r   r   r   
test_stack   s    
 
 "
zBaseReshapingTests.test_stackr   r!   r(   )r4   r(   )r'   r4   )r!   r(   r)   )r   r   r   )r'   r!   r   )r'   r(   r   )r'   r!   r   )r4   r!   r   )r4   r)   r   objseriesframec                s   d t |  |dkr(tj |d}ntj  d|d}|j}tt|tj	fddtd|D }x&|D ]}|j
|dt fddjD st|dkr| }|j
|djd	dd
}	| |	 |tj
| jjd}
|dkr~t jr&|
jt st|
t}
t jrR|
jt sHt|
t}
t jr~|
jt stt|
t}
t| |
 qvW d S )Nrl   )r   )r'   r4   c             3   s   | ]}t  |V  qd S )N)	itertoolspermutations)r-   i)levelsr   r   	<genexpr>7  s    z2BaseReshapingTests.test_unstack.<locals>.<genexpr>r   )levelc             3   s"   | ]}t | jt V  qd S )N)r   arrayra   )r-   rK   )r   r   r   r   rr   =  s    r   )r5   )rs   Z
fill_value)r   r   r   r   Znlevelsr7   rA   rn   chainfrom_iterableZunstackri   re   r   Zto_frameZ	droplevelr#   r+   r,   r   r:   r   r   applyr   r   )r   r   r   rk   rL   ncombinationsrs   rM   Zaltr%   r   )r   rq   r   r   test_unstack  s<    





zBaseReshapingTests.test_unstackc             C   s@   |  }t|t|kst|d |d< |d |d ks<td S )Nr   r   )Zravelra   r   )r   r   r   r   r   r   
test_ravelY  s    zBaseReshapingTests.test_ravelc             C   sf   |  }t|t|kst||k	s(t|j|jd d d ksBt|d |d< |d |d ksbtd S )Nr@   r   r   )	transposera   r   shape)r   r   r   r   r   r   test_transposeb  s    z!BaseReshapingTests.test_transposec             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}| || | tt|| | tt|dg |dg  d S )NrU   )r'   r4   r!   r(   r)   d)r   r   r   )r   r   r    )r!   r(   r)   r   r'   r4   )	r   r   Tra   r6   r   r#   r8   r|   )r   r   rM   r   r%   r   r   r   test_transpose_framep  s    , z'BaseReshapingTests.test_transpose_frameN)__name__
__module____qualname____doc__pytestmarkZparametrizer   r&   r3   r;   r>   rB   rH   rI   rN   rO   rP   rQ   r\   rc   rd   r   Z
MultiIndexfrom_tuplesrj   Zfrom_productrz   r{   r~   r   r   r   r   r   r      sH   
/	r   )rn   numpyr8   r   Zpandas.core.dtypes.commonr   r   r   Zpandasr   Zpandas.api.extensionsr   Zpandas.core.internalsr   Z pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s   