o
    Û­jk6  ã                   @   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©Úignore_indexé   r   Úblocks)ÚpdÚSeriesÚ	DataFrameÚconcatÚlenÚdtypesÚdtypeÚhasattrÚ_mgrÚ
isinstancer	   r   Úarraysr   )ÚselfÚdatar   ÚwrappedÚresultr   © r   úb/var/www/html/CropPilot/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¡}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   Ú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 ||¡ 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   r3   r   r   r   r6   >   s    c                 S   s   g | ]	}|d    t¡‘qS r7   r0   r3   r   r   r   r6   ?   s    r2   )r
   r   r1   r   r"   r#   r$   r2   )r   r   Údf1Údf2Ú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*   r=   r   ©Úaxisr   ©r   r   )
r
   r   r   r"   r#   Ú_from_sequenceÚlistr   ÚnpÚnan©r   r   Úna_valuer8   r9   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   r=   é   rA   r>   r   F)r@   Úcopy)r
   r   rB   rC   r   r   r"   r#   rF   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   éÿÿÿÿ)Ú
allow_fill)r    r-   )r
   r   r   r!   rC   Ú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   rL   r+   r   rA   )r
   r   ÚalignrB   rC   r   r"   r$   ©	r   r   rG   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   rL   r*   r+   r   rA   )r
   r   rQ   rB   rC   r   r"   r#   rR   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   rA   )r
   r   r   rD   Úaranger   rQ   rB   rC   r   rY   r"   r$   r#   )r   r   rG   ÚserÚdfrS   rT   rU   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   r=   r>   ©r
   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œ¡}t ||¡ d S r_   r`   ra   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   rA   )r
   r   r   r2   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œ¡}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   )Úint2rh   )r   r   r   )r   r   r   r   r   rA   )rg   rj   rh   rf   )rf   rg   rh   rj   Úouter)Úhowr   ri   )r   r   r   r   r   )	r
   r   ÚmergerB   r   r"   r#   rD   rE   )r   r   rG   r8   r9   Ú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   rA   r   ©rh   Úvalrh   ©Úon©rh   Úval_xÚval_yr   T)Údrop)
ÚtyperB   r   r
   r   rm   r"   r#   ÚilocÚreset_index)r   r   r    r-   rh   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
œ¡}t ||¡ d S )Nr   rA   r+   rq   rh   rs   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   ru   )	ry   rB   r   r
   r   rm   r!   r"   r#   )	r   r   r    r-   rh   r8   r9   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*   r=   ©r*   r    ©r*   r-   rk   Ú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 )NrL   r>   )rƒ   r   )r
   r   r~   Ústackr1   r2   r   r   r   rz   Úallr   r"   Úassert_equal)r   r   r~   rƒ   r]   r   r(   r   r   r   Ú
test_stackö   s    
 "
zBaseReshapingTests.test_stackr   r    r-   )r   r€   )r=   r-   )r>   r,   re   ))r*   r    r   )r*   r-   r   )r*   r    r   )r=   r    r   )r=   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 ¡ s„J ‚ˆ t¡‰t ˆ|¡ q9d S )Nr‰   r   r>   c                 3   s   � | ]	}t  ˆ |¡V  qd S ©N)Ú	itertoolsÚpermutations)r4   Úi)Úlevelsr   r   Ú	<genexpr>4  s   € 
ÿz2BaseReshapingTests.test_unstack.<locals>.<genexpr>r   )Úlevelc                 3   s$   � | ]}t ˆ| jtˆ ƒƒV  qd S r‹   )r   Úarrayry   )r4   rZ   )r   r   r   r   r�   :  s   € 
ÿr   r?   )r‘   Ú
fill_value)r   r
   r   r   ÚnlevelsrC   rO   rŒ   ÚchainÚfrom_iterableÚunstackr…   r~   Úto_frameÚ	droplevelr"   r#   r1   r2   r   rG   r   )r   r   r   rˆ   r\   ÚnÚcombinationsr‘   r]   ÚaltÚ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   )Úravelry   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 )NrM   z&test_transpose assumes mutability and rŸ   r   r   )Ú	transposery   Ú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 )Nri   r>   )r    r-   r.   Údr   r   r   rA   r   r   r*   r=   )
r
   r   ÚTry   rB   r   r"   r#   rD   r¦   )r   r   r]   r   r(   r   r   r   Útest_transpose_framem  s   (üù	(z'BaseReshapingTests.test_transpose_frameN) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r¢   ÚmarkÚparametrizer   r)   r<   rH   rK   rP   rW   rX   r^   rb   rc   rd   rp   r|   r}   Úfilterwarningsr
   Ú
MultiIndexÚfrom_tuplesr‡   Úfrom_productrž   r¥   r¨   r«   r   r   r   r   r      s^    

ÿÿþþ	ÿùþ%r   )rŒ   ÚnumpyrD   r¢   Úpandasr
   Úpandas._testingÚ_testingr"   Úpandas.api.extensionsr   Úpandas.core.internals.blocksr   r   r   r   r   r   Ú<module>   s    