o
    gp7                     @   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                
   @   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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ignore_index   r   blocks)pdSeries	DataFrameconcatlendtypesdtypehasattr_mgr
isinstancer   r   arraysr   )selfdatar	   wrappedresultr    r   c/home/ubuntu/cloudmapper/venv/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}| || d S t |g d}| || d S )N   r   indexr      a)r    r    r   r   )r   r   taker   r   assert_frame_equalassert_series_equal)r   data_missingr	   valid_block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>@   s    z?BaseReshapingTests.test_concat_mixed_dtypes.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r-   r   r6   r   r   r   r9   D   s    c                 S   s   g | ]	}|d   tqS r:   r3   r6   r   r   r   r9   E   s    r5   )r   r   r4   r   r&   r'   r5   )r   r   df1df2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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-   r@   r    axisr!   r   r   )	r   r   r   r&   _from_sequencelistr   npnanr   r   na_valuer;   r<   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#   r@      rD   rA   r    F)rC   copy)r   r   rE   rF   r   r   r&   rI   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$      r0   Tr
   )
allow_fill)r$   r0   )r   r   r   r%   rF   ranger&   )r   r   r$   r0   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|g dd\}}t |jt||g |jd}t |j|gt| |jd}| || | || d S )Nr#   r   rO   r.   r!   rD   )r   r   alignrE   rF   r   r'   	r   r   rJ   r$   r0   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   rO   r-   r.   r!   rD   )r   r   rT   rE   rF   r   r&   rU   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    rD   )r   r   r   rG   aranger   rT   rE   rF   r   r\   r'   r&   )r   r   rJ   serdfrV   rW   rX   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    r@   rA   r   r   r   r&   r   r   r`   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 rb   rc   rd   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    rD   )r   r   r   r5   r   r   )r   r   r`   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#   )int2rk   )r    r    r   )r   r   r    r   r    rD   )rj   rm   rk   ri   )ri   rj   rk   rm   outer)howr   rl   )r   r   r    r   r#   )r   r   mergerE   r   r&   rG   rH   )r   r   rJ   r;   r<   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   rD   r    rk   valrk   onrk   val_xval_yr   T)drop)	typerE   r   r   r   rp   r&   ilocreset_index)r   r   r$   r0   rk   r`   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   rD   r.   rt   rk   rv   )r   r   r   r   r    )r    r    r#   r#   r   )r    r#   r    r#   r   rx   )r|   rE   r   r   r   rp   r%   r&   )	r   r   r$   r0   rk   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$   r-   r0   rn   inner)namesc                 C   s   t |d d |d d d}||_| }|t }|t}t|t jr9|j|j	d d df jks8J nt
|j|j	d d df jksJJ |t}| || d S )NrO   rA   r   )r   r   r   stackr4   r5   r   r   r   r}   allr   assert_equal)r   r   r   r`   r   r+   r   r   r   
test_stack   s    

 "
zBaseReshapingTests.test_stackr"   r$   r0   )r   r   )r@   r0   )rA   r/   rh   ))r-   r$   r    )r-   r0   r   )r-   r$   r   )r@   r$   r   )r@   r1   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 ]}|j
|dt fddjD sPJ |dkri| }|j
|djd	dd
}	| |	 |tj
| jjd}
|dkrt jr|
jt sJ |
t}
t jr|
jt sJ |
t}
t jr|
jt sJ |
t}
t| |
 q9d S )Nr   r!   rA   c                 3   s    | ]	}t  |V  qd S N)	itertoolspermutations)r7   i)levelsr   r   	<genexpr>6  s    
z2BaseReshapingTests.test_unstack.<locals>.<genexpr>r    )levelc                 3   s$    | ]}t | jt V  qd S r   )r   arrayr|   )r7   r]   )r   r   r   r   r   <  s    
r   rB   )r   
fill_value)r   r   r   r   nlevelsrF   rR   r   chainfrom_iterableunstackr   r   to_frame	droplevelr&   r4   r5   r   rJ   r   r   applyr   r   )r   r   r"   r   r_   ncombinationsr   r`   altr+   r   )r   r   r   r   test_unstack  sD   







zBaseReshapingTests.test_unstackc                 C   s@   |  }t|t|ksJ |d |d< |d |d ksJ d S )Nr    r   )ravelr|   r   r   r   r   r   r   
test_ravelY  s   zBaseReshapingTests.test_ravelc                 C   sf   |  }t|t|ksJ ||usJ |j|jd d d ks!J |d |d< |d |d ks1J d S )NrP   r    r   )	transposer|   shaper   r   r   r   test_transposeb  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 )Nrl   rA   )r$   r0   r1   dr!   r   r   rD   r    r#   r-   r@   )	r   r   Tr|   rE   r   r&   rG   r   )r   r   r`   r   r+   r   r   r   test_transpose_framep  s   (	(z'BaseReshapingTests.test_transpose_frameN)__name__
__module____qualname____doc__pytestmarkparametrizer   r,   r?   rK   rN   rS   rZ   r[   ra   re   rf   rg   rs   r   r   r   
MultiIndexfrom_tuplesr   from_productr   r   r   r   r   r   r   r   r      sV    


	.	r   )r   numpyrG   r   pandas.core.dtypes.commonr   r   r   pandasr   pandas.api.extensionsr   pandas.core.internalsr    pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s    