U
    ¾mœd*  ã                   @   st   d Z ddlZddlZddlmZ ddlmZ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)Úis_bool_dtypeÚis_integer_dtype)Ú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   úY/home/sam/Atlas/atlas_env/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_2d9   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_2dA   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_reshapeI   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_2dW   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_2dq   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)r6   r4   )Ú.0Úxr   r   r   Ú	<genexpr>„   s     z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>)r   Útolistr6   r4   r   Úallr   r   r   r   Útest_tolist_2d}   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   )rI   )r
   r   Zisnar?   r   ÚanyZfillnar   )r   Zdata_missingrI   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   rI   r   Zerr_expectedZ
err_resultr   Úerrr   Úerr2r   r   r   Útest_reductions_2d_axis_none§   s     (z,Dim2CompatTests.test_reductions_2d_axis_nonec                 C   s¨  |  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‚|  ||	¡ nP|dk�r¤t	|ƒ�srt
|ƒ�r|| d¡}|dk�r”|  ||¡ n|  ||| ¡ d S )Nr   r	   )rP   rO   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   r2   r7   ÚintÚnameZuint)r7   r   r   r   Úget_reduction_result_dtypeÔ   s
    

zLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtype)rN   rQ   rR   )rQ   rR   ZiubÚb)rM   rP   rO   ZFloat64rM   )r   rS   rT   r&   r   r7   r[   Zastyper   r   r   )r   r   rI   r   Úkwargsr   rU   rV   r^   r   r7   r   r   r   Útest_reductions_2d_axis0À   s<    





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   rX   )r   r   )r   rS   rT   r&   r   r   r   )	r   r   rI   r   r   rU   rV   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/   r3   r:   r@   rH   r,   ÚmarkZparametrizerL   rW   ra   rb   r   r   r   r   r      s&   



5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'\)rB   ÚQÚC)
r
   r   Z_ndarrayÚflagsr   rD   r   r,   r-   r.   )r   r   r   r(   rG   Zarr_ncr   r   r   Útest_copy_order  s8    

z$NDArrayBacked2DTests.test_copy_orderN)r'   rc   rd   rl   r   r   r   r   rf     s   rf   )Ú__doc__Únumpyr2   r,   Zpandas._libs.missingr   Zpandas.core.dtypes.commonr   r   Zpandasr   Zpandas.core.arrays.integerr   Z pandas.tests.extension.base.baser   r   rf   r   r   r   r   Ú<module>   s    z