o
    թZhk6                     @   sV   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 G dd dZdS )    N)ExtensionArray)EABackedBlockc                
   @   s  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#ejd$d%d&gejjd'd(gd)d*gd+gejd,ddgd-d. Zejd/ejjd%d&gd0d1ggd0d1gd+ejg d2ejg d3ejg d4gejd5d6d7gd8d9 Zd:d; Zd<d= Zd>d? Zd@S )ABaseReshapingTestsz&Tests for reshaping and concatenation.in_frameTFc                 C   s   t |}|rt |}t j||gdd}t|t|d ks!J |r)|jd }n|j}||jks3J t|jdrDt	|jj
d tsDJ t	|jjd tsOJ 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   \/var/www/html/lang_env/lib/python3.10/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}|r,t d|i}t d|i}t ||g}|rIt d|g di}t|| d S t |g d}t|| d S )N   r   indexr      a)r   r   r   r   )r	   r
   taker   r   tm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|| t dd |D }t d	d |D }t|| t ||tg}t |d
|d
g}t|| t |d |d tg}t |d d
|d d
g}t|| 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>:   s    z?BaseReshapingTests.test_concat_mixed_dtypes.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r$   r   r-   r   r   r   r0   >   s    c                 S   s   g | ]	}|d   tqS r1   r*   r-   r   r   r   r0   ?   s    r,   )r	   r   r+   r   r   r    r!   r,   )r   r   df1df2Zdf3dfsr   r"   r   r   r   test_concat_mixed_dtypes1   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|| t j|d |d gdd}t|| 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|| t j|d |d gdd}t|| d S )Nr$   r   Br%   r$   r6   r   axisr   r   r   )
r	   r   r   r   r    _from_sequencelistr   npnanr   r   na_valuer2   r3   r"   r   r   r   r   test_concat_columnsK   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	}t|| d S )
Nr$   r   r6      r:   r7   r   F)r9   copy)r	   r   r;   r<   r   r   r   r    r?   r   r   r   'test_concat_extension_arrays_copy_falsec   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}t|| 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   r   test_concat_with_reindexp   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}t|| t|| d S )Nr   r   rE   r%   r   r:   )r	   r
   alignr;   r<   r   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g dd\}}t d|jt||g |jdi}t d|j|gt| |jdi}t|| t|| d S )Nr   r   rE   r$   r%   r   r:   )r	   r   rI   r;   r<   r   r   r    rJ   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}t|| t|| d S )Nr   )namecolr   r:   )r	   r
   r   r=   Zaranger   rI   r;   r<   r   rQ   r   r!   r    )r   r   r@   serdfrK   rL   rM   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}t|| d S Nr$   r   r6   r7   r	   r   r   r   r    r   r   rT   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}t|| d S rV   rW   rX   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sJ d S )Nr$   r   r:   )r	   r   r   r,   r   r   )r   r   rT   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}t||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}t||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^   ra   r_   r]   )r]   r^   r_   ra   outer)howr   r`   )r   r   r   r   r   )	r	   r   merger;   r   r   r    r=   r>   )r   r   r@   r2   r3   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|| tj|jddg |dd}|jddg j	d	d
}t|| d S )Nr   r:   r   r_   valr_   onr_   Zval_xZval_yr   T)Zdrop)
typer;   r   r	   r   rd   r   r    ilocZreset_index)r   r   r   r'   r_   rT   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
}t|| d S )Nr   r:   r%   rh   r_   rj   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   rl   )	rm   r;   r   r	   r   rd   r   r   r    )	r   r   r   r'   r_   r2   r3   r   r"   r   r   r   (test_merge_on_extension_array_duplicates   s   z;BaseReshapingTests.test_merge_on_extension_array_duplicatesz9ignore:The previous implementation of stack is deprecatedcolumnsr$   r6   r$   r   r$   r'   rb   inner)namesfuture_stackc                 C   s   t |d d |d d d}||_|j|d}|tj|d}|t}t|t jr=|j|j	d d df jks<J nt
|j|j	d d df jksNJ |t}t|| d S )NrE   r7   )rv   r   )r	   r   rq   stackr+   r,   r   r
   r   rn   allr   r   Zassert_equal)r   r   rq   rv   rT   r   r"   r   r   r   
test_stack   s    
 "
zBaseReshapingTests.test_stackr   r   r'   )rr   rs   )r6   r'   )r7   r&   r\   ))r$   r   r   )r$   r'   r   )r$   r   r   )r6   r   r   )r6   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 ]V}|j
|dt fddjD sPJ |dkri| }|j
|djd	dd
}	t|	 |t}
|
j
| jjd}|dkr|jtk sJ tt| q9d S )Nr{   r   r7   c                 3   s    | ]	}t  |V  qd S N)	itertoolspermutations)r.   i)levelsr   r   	<genexpr>4  s    
z2BaseReshapingTests.test_unstack.<locals>.<genexpr>r   )levelc                 3   s$    | ]}t | jt V  qd S r}   )r   arrayrm   )r.   rR   )r   r   r   r   r   :  s    
r   r8   )r   Z
fill_value)r   r	   r
   r   Znlevelsr<   rG   r~   chainfrom_iterableZunstackrx   rq   Zto_frameZ	droplevelr   r    r+   r,   r   r@   r   )r   r   r   rz   rS   ncombinationsr   rT   ZaltZobj_serr"   r   )r   r   r   r   test_unstack  s2   

zBaseReshapingTests.test_unstackc                 C   s\   |  }t|t|ksJ |jjrtd|j d |d |d< |d |d ks,J d S )Nz"test_ravel assumes mutability and  is immutabler   r   )Zravelrm   r   _is_immutablepytestskipr   r   r   r   r   r   
test_ravelN  s   zBaseReshapingTests.test_ravelc                 C   s   |  }t|t|ksJ ||usJ |j|jd d d ks!J |jjr/td|j d |d |d< |d |d ks?J d S )NrF   z&test_transpose assumes mutability and r   r   r   )	transposerm   shaper   r   r   r   r   r   r   r   test_transposeZ  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	|| tt	t	|d
g |d
g  d S )Nr`   r7   )r   r'   r(   dr   r   r   r:   r   r   r$   r6   )
r	   r   Trm   r;   r   r   r    r=   r   )r   r   rT   r   r"   r   r   r   test_transpose_framem  s   (	(z'BaseReshapingTests.test_transpose_frameN) __name__
__module____qualname____doc__r   markZparametrizer   r#   r5   rA   rD   rH   rO   rP   rU   rY   rZ   r[   rg   ro   rp   filterwarningsr	   Z
MultiIndexfrom_tuplesry   Zfrom_productr   r   r   r   r   r   r   r   r      s^    

	%r   )r~   numpyr=   r   Zpandasr	   Zpandas._testingZ_testingr   Zpandas.api.extensionsr   Zpandas.core.internals.blocksr   r   r   r   r   r   <module>   s    