a
    j=ic%7                     @   sd   d dl Z d dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ G dd deZdS )    N)ExtensionArray)EABackedBlock)BaseExtensionTestsc                
   @   sf  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g d0ejg d1ejg d2gejd3d4d5gd6d7 Zd8d9 Zd:d; Zd<d= Zd>S )?BaseReshapingTestsz&Tests for reshaping and concatenation.in_frameTFc                 C   s   t |}|rt |}t j||gdd}t|t|d ksBJ |rR|jd }n|j}||jksfJ t|jdrt	|jj
d tsJ t	|jjd tsJ d S )NTZignore_index   r   blocks)pdSeries	DataFrameconcatlendtypesdtypehasattrZ_mgr
isinstancer	   r   Zarraysr   )selfdatar   wrappedresultr    r   v/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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|g di}| || n t |g d}| || d S )N   r   indexr      a)r   r   r   r   )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   s0  t d|d d i}t dg di}t dg d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   r   bccategoryc                 S   s   g | ]}| tqS r   astypeobject.0xr   r   r   
<listcomp>;       z?BaseReshapingTests.test_concat_mixed_dtypes.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r$   r   r-   r   r   r   r0   ?   r1   c                 S   s   g | ]}|d   tqS r2   r*   r-   r   r   r   r0   @   r1   r,   )r
   r   r+   r   r    r!   r,   )r   r   df1df2Zdf3dfsr   r"   r   r   r   test_concat_mixed_dtypes2   s     

"z+BaseReshapingTests.test_concat_mixed_dtypesc                 C   s"  t d|d d i}t dg di}t |d d g dd}t j||gdd}| || t j|d |d gdd}| || t jdg dig d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$   r7   r   axisr   r   r   )	r
   r   r   r    _from_sequencelistr   npnanr   r   na_valuer3   r4   r"   r   r   r   r   test_concat_columnsL   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   r7      r;   r8   r   F)r:   copy)r
   r   r<   r=   r   r   r    r@   r   r   r   'test_concat_extension_arrays_copy_falsed   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'   Tr   )Z
allow_fill)r   r'   )r
   r   r   r   r=   ranger    )r   r   r   r'   r   r"   r   r   r   test_concat_with_reindexq   s    z+BaseReshapingTests.test_concat_with_reindexc           	      C   s   |d d }|dd }t |t j|g dd\}}t |jt||g |jd}t |j|gt| |jd}| || | || d S )Nr   r   rF   r%   r   r;   )r
   r   alignr<   r=   r   r!   	r   r   rA   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g dd\}}t d|jt||g |jdi}t d|j|gt| |jdi}| || | || d S )Nr   r   rF   r$   r%   r   r;   )r
   r   rJ   r<   r=   r   r    rK   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   r>   Zaranger   rJ   r<   r=   r   rR   r!   r    )r   r   rA   serdfrL   rM   rN   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   r7   r8   r
   r   r   r    r   r   rU   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 rW   rX   rY   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s8J d S )Nr$   r   r;   )r
   r   r   r,   r   r   )r   r   rU   r   r   r   test_set_frame_overwrite_object   s    z2BaseReshapingTests.test_set_frame_overwrite_objectc                 C   s  t |d d g dg dd}t g dg dd}t ||}t g dg dg d	|j|d
 |d
 |d g|jdd}| ||g d  t j||dd}t ddddtjgdddtjdgg d|j|d
 |d
 |d |d |g|jdd}| ||g d  d S )Nr   r%   r   r   r   )extint1key)r   r   r      )r   r   r   r   )int2r`   )r   r   r   )r   r   r   r   r   r;   )r_   rb   r`   r^   )r^   r_   r`   rb   outer)howr   ra   )r   r   r   r   r   )r
   r   merger<   r   r    r>   r?   )r   r   rA   r3   r4   resexpr   r   r   
test_merge   s0    "
 
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   r`   valr`   onr`   Zval_xZval_yr   T)Zdrop)	typer<   r   r
   r   re   r    ilocZreset_index)r   r   r   r'   r`   rU   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|g dd}t|g dd}tj||dd}t|g dg dg d	d
}| || d S )Nr   r;   r%   ri   r`   rk   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   rm   )rn   r<   r   r
   r   re   r   r    )	r   r   r   r'   r`   r3   r4   r   r"   r   r   r   (test_merge_on_extension_array_duplicates   s    z;BaseReshapingTests.test_merge_on_extension_array_duplicatescolumnsr$   r7   r$   r   r$   r'   rc   inner)namesc                 C   s   t |d d |d d d}||_| }|t }|t}t|t jrr|j|j	d d df jksJ n"t
|j|j	d d df jksJ |t}| || d S )NrF   r8   r   )r
   r   rr   stackr+   r,   r   r   r   ro   allr   Zassert_equal)r   r   rr   rU   r   r"   r   r   r   
test_stack   s    
 
 "
zBaseReshapingTests.test_stackr   r   r'   )rs   rt   )r7   r'   )r8   r&   r]   ))r$   r   r   )r$   r'   r   )r$   r   r   )r7   r   r   )r7   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 }|D ]P}|j
|dt fddjD sJ |dkr| }|j
|djd	dd
}	| |	 |dkrt|jtj}
nt|jjd	 tj}
|
s
d nt}tj|dd |t}W d    n1 s>0    Y  |j
| jjd}|dkr~|
s~|jtk s~J tj|dd tW d    n1 s0    Y  | | qrd S )Nr{   r   r8   c                 3   s   | ]}t  |V  qd S N)	itertoolspermutations)r.   i)levelsr   r   	<genexpr>1  s   z2BaseReshapingTests.test_unstack.<locals>.<genexpr>r   )levelc                 3   s"   | ]}t | jt V  qd S r}   )r   arrayrn   )r.   rS   )r   r   r   r   r   7  s   r   r9   zastype from Sparse)match)r   Z
fill_value)r   r
   r   r   Znlevelsr=   rH   r~   chainfrom_iterableZunstackrx   rr   Zto_frameZ	droplevelr    r   r   ZSparseDtyper   ZiatFutureWarningtmZassert_produces_warningr+   r,   rA   )r   r   r   rz   rT   ncombinationsr   rU   ZaltZ	is_sparsewarnZobj_serr"   r   )r   r   r   r   test_unstack  s<    
**zBaseReshapingTests.test_unstackc                 C   s@   |  }t|t|ksJ |d |d< |d |d ks<J d S )Nr   r   )Zravelrn   r   r   r   r   r   r   
test_ravelU  s    zBaseReshapingTests.test_ravelc                 C   sf   |  }t|t|ksJ ||us(J |j|jd d d ksBJ |d |d< |d |d ksbJ d S )NrG   r   r   )	transposern   shaper   r   r   r   test_transpose^  s    z!BaseReshapingTests.test_transposec                 C   s   t j|d d |d d dg d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 )Nra   r8   )r   r'   r(   dr   r   r   r;   r   r   r$   r7   )	r
   r   Trn   r<   r   r    r>   r   )r   r   rU   r   r"   r   r   r   test_transpose_framel  s    (	z'BaseReshapingTests.test_transpose_frameN)__name__
__module____qualname____doc__pytestmarkZparametrizer   r#   r6   rB   rE   rI   rP   rQ   rV   rZ   r[   r\   rh   rp   rq   r
   Z
MultiIndexfrom_tuplesry   Zfrom_productr   r   r   r   r   r   r   r   r      sT   

	
/	r   )r~   numpyr>   r   Zpandasr
   Zpandas._testingZ_testingr   Zpandas.api.extensionsr   Zpandas.core.internals.blocksr   Z pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s   