a
    oÝEbƒ5  ã                   @   sX   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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ƒrˆt	|jj
d tƒsˆJ ‚t	|jjd tƒsžJ ‚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   úe/home/ja/django-apps/lartica_env/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¡}|r�t  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_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 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_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	�}|  ||¡ 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_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œ¡}|  ||¡ 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_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�¡}|  ||¡ |  ||¡ 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s”J ‚n"t
|j|j	d d …df jkƒs”J ‚| 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                    s4  ˆ 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 ƒƒs J ‚|dkrÒ| ¡ }|j
|d�jd	dd
�}	|  ˆ|	¡ | t¡j
|ˆ jjd�}
|dk�rt|jtjƒ�s|
jtk ¡ �sJ ‚ˆ t¡‰|  ˆ|
¡ qrd S )Nr{   r   r8   c                 3   s   | ]}t  ˆ |¡V  qd S ©N)Ú	itertoolsÚpermutations)r.   Úi)Úlevelsr   r   Ú	<genexpr>0  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‚   6  s   r   r9   )rƒ   Z
fill_value)r   r
   r   r   Znlevelsr=   rH   r~   ÚchainÚfrom_iterableZunstackrx   rr   Zto_frameZ	droplevelr    r+   r,   r   rA   r   ZSparseDtyper   )r   r   r   rz   rT   ÚnÚcombinationsrƒ   rU   Zaltr"   r   )r   r�   r   r   Útest_unstack  s2    ÿÿ
ÿ
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_ravelM  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_transposeV  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_framed  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.api.extensionsr   Zpandas.core.internals.blocksr   Z pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s   