U
    ÎZj%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                   @   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ƒrˆt
|j	jd tƒsˆt‚t
|j	jd tƒsžt‚d S )NT©Zignore_indexé   r   Úblocks)ÚpdÚSeriesÚ	DataFrameÚconcatÚlenÚAssertionErrorÚdtypesÚdtypeÚhasattrZ_mgrÚ
isinstancer	   r   Zarraysr   )ÚselfÚdatar   ÚwrappedÚresultr   © r   úh/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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| 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/   ?   s     c                 S   s   g | ]}|d    t¡‘qS r0   r)   r,   r   r   r   r/   @   s     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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%   r5   ©Úaxisr   ©r   )	r
   r   r   r!   Ú_from_sequenceÚlistr   ÚnpÚnan©r   r   Úna_valuer1   r2   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   r5   é   r9   r6   r   F)r8   Ú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|dddgd�¡\}}t  |jt|ƒ|g |jd�¡}t  |j|gt|ƒ |jd�¡}|  ||¡ |  ||¡ d S )Nr   r   rD   r   r   r9   )r
   r   Úalignr:   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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   rD   r%   r   r   r9   )r
   r   rH   r:   r;   r   r!   rI   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   r9   )r
   r   r   r<   Zaranger   rH   r:   r;   r   rP   r"   r!   )r   r   r?   ÚserÚdfrJ   rK   rL   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   r5   r6   ©r
   r   r   r!   ©r   r   rS   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 rU   rV   rW   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   r9   )r
   r   r   r+   r   r   r   )r   r   rS   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é   )Úint2r]   r9   )r\   r_   r]   r[   r[   r\   r]   r_   Úouter)Úhow)r
   r   Úmerger:   r   r!   r<   r=   )r   r   r?   r1   r2   ÚresÚexpr   r   r   Ú
test_merge¸   s4    &  ÿüÿ
 ÿüÿ
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   r9   r   ©r]   Úvalr]   ©Úon©r]   Zval_xZval_yr   T)Zdrop)	Útyper:   r   r
   r   rb   r!   ÚilocZreset_index)r   r   r   r&   r]   rS   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   r9   r   r   rf   r]   rh   r   rj   )rk   r:   r   r
   r   rb   r    r!   )	r   r   r   r&   r]   r1   r2   r   r#   r   r   r   Ú(test_merge_on_extension_array_duplicatesæ   s    ýÿz;BaseReshapingTests.test_merge_on_extension_array_duplicatesÚcolumnsr%   r5   )r%   r   )r%   r&   r`   Ú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”t
‚n"t|j|j	d d …df jkƒs”t
‚| t¡}|  ||¡ d S )NrD   r6   r   )r
   r   ro   Ústackr*   r+   r   r   r   rl   r   Úallr   Zassert_equal)r   r   ro   rS   r   r#   r   r   r   Ú
test_stack÷   s    
 
 "
zBaseReshapingTests.test_stackr   r   r&   )r5   r&   r6   )r   r&   r'   )r   r   r   )r%   r   r   )r%   r&   r   )r%   r   r   )r5   r   r   )r5   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 �]$}|j
|d�‰t‡ ‡fdd„ˆjD ƒƒs¢t‚|dkrÔ| ¡ }|j
|d�jd	dd
�}	|  ˆ|	¡ |dkrìt|jtjƒ}
nt|jjd	 tjƒ}
|
�s
d nt}tj|dd�� | t¡}W 5 Q R X |j
|ˆ jjd�}|dk�rh|
�sh|jtk ¡ �sht‚tj|dd�� ˆ t¡‰W 5 Q R X |  ˆ|¡ qrd S )Nrv   r   r6   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 rx   )r   Úarrayrk   )r-   rQ   )r   r   r   r   r}   7  s    r   r7   zastype from Sparse)Úmatch)r~   Z
fill_value)r   r
   r   r   Znlevelsr;   rF   ry   ÚchainÚfrom_iterableZunstackrs   ro   r   Zto_frameZ	droplevelr!   r   r   ZSparseDtyper   ZiatÚFutureWarningÚtmZassert_produces_warningr*   r+   r?   )r   r   r   ru   rR   ÚnÚcombinationsr~   rS   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t‚|d |d< |d |d ks<t‚d S )Nr   r   )Zravelrk   r   ©r   r   r   r   r   r   Ú
test_ravelU  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 )NrE   r   r   )Ú	transposerk   r   Úshaper‰   r   r   r   Útest_transpose^  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 )Nr^   r6   r   r&   r'   Údr   r   r   r9   r   r   )r   r&   r'   rŽ   r%   r5   )	r
   r   ÚTrk   r:   r   r!   r<   r‹   )r   r   rS   r   r#   r   r   r   Útest_transpose_framel  s    ,üù	z'BaseReshapingTests.test_transpose_frameN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpytestÚmarkZparametrizer   r$   r4   r@   rC   rG   rN   rO   rT   rX   rY   rZ   re   rm   rn   r
   Z
MultiIndexÚfrom_tuplesrt   Zfrom_productrˆ   rŠ   r�   r�   r   r   r   r   r      s`   

 ÿþþ	
ûÿùþ/	r   )ry   Ú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   