U
    ÎZjõ(  ã                   @   sd   d Z ddlZddlZddlmZ ddlZddlm	Z	 ddl
mZ G dd„ deƒZG dd	„ d	eƒZdS )
z
Tests for 2D compatibility.
é    N)Úis_matching_na)ÚINT_STR_TO_DTYPE)ÚBaseExtensionTestsc                	   @   sä   e Z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¡dd„ ƒZej dddddd d!g¡d"d#„ ƒZej dddddd d!g¡d$d%„ ƒZej dddddd d!g¡d&d'„ ƒZd(S ))ÚDim2CompatTestsc                 C   sJ   |  d¡ dd¡}|j}|d |d ks,t‚|jj|d d d… ksFt‚d S )Né   éÿÿÿÿr   )ÚrepeatÚreshapeÚshapeÚAssertionErrorÚT)ÚselfÚdataÚarr2dr
   © r   úc/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/extension/base/dim2.pyÚtest_transpose   s    zDim2CompatTests.test_transposec                 C   sT   |  d¡ dd¡}t |¡}t |d d …df |d d …df dœ¡}|  ||¡ d S )Nr   r   r   é   )r   r   )r   r	   ÚpdZ	DataFrameZassert_frame_equal)r   r   r   ZdfÚexpectedr   r   r   Útest_frame_from_2d_array   s    
(z(Dim2CompatTests.test_frame_from_2d_arrayc                 C   s4   |  d¡ dd¡}| dd¡}|j}|  ||¡ d S )Nr   r   r   r   )r   r	   Zswapaxesr   Úassert_extension_array_equal©r   r   r   Úresultr   r   r   r   Útest_swapaxes    s    zDim2CompatTests.test_swapaxesc                 C   st   |  d¡ dd¡}|jddd�}| d¡  d¡ dd¡}|  ||¡ |jddd�}|  d¡ dd¡}|  ||¡ d S )Né   r   r   r   ©Úaxisr   )r   r	   Údeleter   r   r   r   r   Útest_delete_2d'   s    zDim2CompatTests.test_delete_2dc                 C   sH   |  dd¡}|jdddgdd�}| dddg¡  dd¡}|  ||¡ d S )Nr   r   r   r   )r	   Ztaker   r   r   r   r   Útest_take_2d4   s    zDim2CompatTests.test_take_2dc                 C   s`   t | dd¡ƒ}| dt|ƒj› �¡dks.t‚t | dd¡ƒ}| dt|ƒj› �¡dks\t‚d S )Nr   r   ú<)Úreprr	   ÚcountÚtypeÚ__name__r   )r   r   Úresr   r   r   Útest_repr_2d<   s    zDim2CompatTests.test_repr_2dc              	   C   s´   |  dd¡}|j|jdfks t‚t|ƒt|ƒks4t‚|  d¡}|j|jdfksRt‚t|ƒt|ƒksft‚t t¡� |  |jdf¡ W 5 Q R X t t¡� |  |jd¡ W 5 Q R X d S )Nr   r   )r   r   r   )r	   r
   Úsizer   ÚlenÚpytestÚraisesÚ
ValueError)r   r   r   r   r   r   Útest_reshapeD   s    
zDim2CompatTests.test_reshapec              	   C   sÞ   |  dd¡}|d }|  ||¡ t t¡� |d  W 5 Q R X t t¡� |d  W 5 Q R X |d d … }|  ||¡ |d d …d d …f }|  ||¡ |d d …df }|dg }|  ||¡ |d d …tjf }|  ||j¡ d S )Nr   r   r   éþÿÿÿ)r	   r   r*   r+   Ú
IndexErrorÚnpZnewaxisr   r   r   r   r   Útest_getitem_2dR   s     
zDim2CompatTests.test_getitem_2dc                 C   s‚   |  dd¡}tt|ƒƒ}t|ƒ|jd ks.t‚|D ]J}t|t|ƒƒsHt‚|j|jksXt‚|j	dksft‚t|ƒ|jd ks2t‚q2d S )Nr   r   r   )
r	   ÚlistÚiterr)   r
   r   Ú
isinstancer$   ÚdtypeÚndim)r   r   r   ZobjsÚobjr   r   r   Útest_iter_2dl   s    zDim2CompatTests.test_iter_2dc                 C   sR   |  dd¡}| ¡ }| ¡ g}t|tƒs,t‚tdd„ |D ƒƒsBt‚||ksNt‚d S )Nr   r   c                 s   s   | ]}t |tƒV  qd S )N)r4   r2   )Ú.0Úxr   r   r   Ú	<genexpr>   s     z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>)r	   Útolistr4   r2   r   Úallr   r   r   r   Útest_tolist_2dx   s    
zDim2CompatTests.test_tolist_2dc              	   C   sì   t |ƒ ||g¡ dd¡}| ¡ }|j||gdd�}| |gd ¡ dd¡}|  ||¡ |j||gdd�}|jt|ƒdfks€t‚|  |d d …d d…f |¡ |  |d d …dd …f |¡ d}tj	t
|d�� |j||gdd� W 5 Q R X d S )	Nr   r   r   r   é   r   z0axis 2 is out of bounds for array of dimension 2©Úmatch)r$   Z_concat_same_typer	   Úcopyr   r
   r)   r   r*   r+   r,   )r   r   ÚleftÚrightr   r   Úmsgr   r   r   Útest_concat_2dƒ   s    zDim2CompatTests.test_concat_2dÚmethodZbackfillÚpadc                 C   sp   |  d¡ dd¡}|d  ¡  ¡ s&t‚|d  ¡  ¡ r:t‚|j|d�}|j|d�  d¡ dd¡}|  ||¡ d S )Nr   r   r   )rG   )r   r	   Zisnar=   r   ÚanyZfillnar   )r   Zdata_missingrG   Zarrr   r   r   r   r   Útest_fillna_2d_method—   s    z%Dim2CompatTests.test_fillna_2d_methodÚmeanÚmedianÚvarÚstdÚsumÚprodc           
      C   sÚ   |  dd¡}d }d }zt||ƒƒ }W nb tk
r† } zD|}zt||ƒd d�}W n& tk
rt }	 z|	}W 5 d }	~	X Y nX W 5 d }~X Y nX t||ƒd d�}|d k	s¨|d k	rÀt|ƒt|ƒks¼t‚d S t||ƒsÖ||ksÖt‚d S )Nr   r   r   )r	   ÚgetattrÚ	Exceptionr$   r   r   )
r   r   rG   r   Zerr_expectedZ
err_resultr   Úerrr   Úerr2r   r   r   Útest_reductions_2d_axis_none¢   s     (z,Dim2CompatTests.test_reductions_2d_axis_nonec                 C   sr  |  dd¡}i }|dkr d|d< zt||ƒf ddi|—Ž}W n~ tk
rº } z`zt||ƒƒ  W nB tk
r  } z$t|ƒt|ƒks„t‚W Y ¢
W Y ¢d S d }~X Y n
X tdƒ‚W 5 d }~X Y nX dd	„ }|d
k�rT|}	|dk�rF|jjdk�rF||jƒ}
| |
¡}	|jjdk�r|dk�rnt|	ƒt|ƒk�s6tt|	ƒƒ‚|
|	jk�sFt‚|  ||	¡ n|dk�rn|  ||| ¡ d S )Nr   r   rN   r   Zddofr   ú'Both reductions should raise or neitherc                 S   s>   | j dkr| S | jdkr(tt t¡j S tt tj¡j S d S )Né   Zib)ÚitemsizeÚkindr   r0   r5   ÚintÚnameZuint)r5   r   r   r   Úget_reduction_result_dtypeÏ   s
    

zLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtype)rK   rL   rO   rP   )rO   rP   ZiubÚb)	r	   rQ   rR   r$   r   r5   rY   Zastyper   )r   r   rG   r   Úkwargsr   rS   rT   r\   r   r5   r   r   r   Útest_reductions_2d_axis0»   s4    



z(Dim2CompatTests.test_reductions_2d_axis0c           	      C   sÜ   |  dd¡}zt||ƒdd�}W n~ tk
rž } z`zt||ƒƒ  W nB tk
r„ } z$t|ƒt|ƒksht‚W Y ¢
W Y ¢d S d }~X Y n
X tdƒ‚W 5 d }~X Y nX |jdks®t‚t||ƒƒ }|d }t||ƒsØ||ksØt‚d S )Nr   r   r   rV   )r   r   )r	   rQ   rR   r$   r   r
   r   )	r   r   rG   r   r   rS   rT   Zexpected_scalarr&   r   r   r   Útest_reductions_2d_axis1í   s    z(Dim2CompatTests.test_reductions_2d_axis1N)r%   Ú
__module__Ú__qualname__r   r   r   r   r    r'   r-   r1   r8   r>   rF   r*   ÚmarkZparametrizerJ   rU   r_   r`   r   r   r   r   r      s&   



1r   c                   @   s   e Zd Zdd„ ZdS )ÚNDArrayBacked2DTestsc              	   C   sð  |  d¡ dd¡}|jjd s"t‚| ¡ }|jjd s:t‚|d d d…d d d…f  ¡ }|jjd sft‚| d¡}|jjd r€t‚|jjd s�t‚| d¡}|jjd sªt‚|j d¡}|jjd rÆt‚|jjd sÖt‚d}tjt	|d�� | d	¡ W 5 Q R X |d d d… }|jjd �rt‚|jjd �r0t‚| ¡ jjd �sFt‚| ¡ jjd �r\t‚| d
¡jjd �stt‚| d
¡jjd �rŒt‚| d¡jjd �r¤t‚| d¡jjd �s¼t‚| d¡jjd �sÔt‚| d¡jjd �rìt‚d S )Nr   r   ZC_CONTIGUOUSÚFZF_CONTIGUOUSÚKz6order must be one of 'C', 'F', 'A', or 'K' \(got 'Q'\)r@   ÚQÚC)
r   r	   Z_ndarrayÚflagsr   rB   r   r*   r+   r,   )r   r   r   r&   rE   Zarr_ncr   r   r   Útest_copy_order  s8    

z$NDArrayBacked2DTests.test_copy_orderN)r%   ra   rb   rj   r   r   r   r   rd     s   rd   )Ú__doc__Únumpyr0   r*   Zpandas._libs.missingr   Zpandasr   Zpandas.core.arrays.integerr   Z pandas.tests.extension.base.baser   r   rd   r   r   r   r   Ú<module>   s    v