a
    j=ic(                     @   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g ddd Zejdg ddd  Zejdg dd!d" Zd#S )$Dim2CompatTestsc                 C   sJ   | ddd}|j}|d |d ks,J |jj|d d d ksFJ d S )N   r   )repeatreshapeshapeT)selfdataarr2dr
    r   q/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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   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   sD   | dd}|jg ddd}|g d dd}| || d S )Nr   r   )r   r   r   r   r   )r	   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.J t |dd}|dt|j dks\J d S )Nr   r   <)reprr	   counttype__name__)r   r   resr   r   r   test_repr_2d<   s    zDim2CompatTests.test_repr_2dc                 C   s   | dd}|j|jdfks J t|t|ks4J | d}|j|jdfksRJ t|t|ksfJ tt  | |jdf W d    n1 s0    Y  tt | |jd W d    n1 s0    Y  d S )Nr   r   )r   r   r   )r	   r
   size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 d    n1 sH0    Y  tt |d  W d    n1 sz0    Y  |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.J |D ]J}t|t|sHJ |j|jksXJ |jdksfJ t||jd ks2J q2d S )Nr   r   r   )	r	   listiterr*   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,J tdd |D sBJ ||ksNJ d S )Nr   r   c                 s   s   | ]}t |tV  qd S )N)r5   r3   ).0xr   r   r   	<genexpr>       z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>)r	   tolistr5   r3   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sJ | |d d d df | | |d d dd f | d}tjt	|d" |j||gdd W d    n1 s0    Y  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   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&J |d   r:J |j|d}|j|d ddd}| || d S )Nr   r   r   )rI   )r   r	   Zisnar?   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 nf ty } zN|}zt||d d}W n( tyt }	 z|	}W Y d }	~	n
d }	~	0 0 W Y d }~nd }~0 0 t||d d}|d us|d urt|t|ksJ d S t||s||ksJ d S )Nr   r   r   )r	   getattr	Exceptionr%   r   )
r   r   rI   r   Zerr_expectedZ
err_resultr   errr   err2r   r   r   test_reductions_2d_axis_none   s     0z,Dim2CompatTests.test_reductions_2d_axis_nonec                 C   sv  | dd}i }|dkr d|d< zt||f ddi|}W n ty } zjzt||  W nD ty } z,t|t|ksJ W Y d }~W Y d }~d S d }~0 0 tdW Y d }~n
d }~0 0 dd	 }|d
v rX|}	|dv rJ|jjdv rJ||j}
||
}	|jjdkr|dv rnt|	t|ks:J t|	|
|	jksJJ | ||	 n|dkrr| |||  d S )Nr   r   rP   r   Zddofr   'Both reductions should raise or neitherc                 S   s>   | j dkr| S | jdv r(tttj S tttjj S d S )N   ib)itemsizekindr   r1   r6   intnameZuint)r6   r   r   r   get_reduction_result_dtype   s
    

zLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtype)rM   rN   rQ   rR   )rQ   rR   Ziubb)	r	   rS   rT   r%   AssertionErrorr6   r\   Zastyper   )r   r   rI   r   kwargsr   rU   rV   r_   r   r6   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y } zjzt||  W nD ty } z,t|t|ksdJ W Y d }~W Y d }~d S d }~0 0 tdW Y d }~n
d }~0 0 |jdksJ t|| }|d }t||s||ksJ d S )Nr   r   r   rX   )r   r   )r	   rS   rT   r%   ra   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.   r2   r9   r@   rH   r+   markZparametrizerL   rW   rc   rd   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"J | }|jjd s:J |d d dd d df  }|jjd sfJ |d}|jjd rJ |jjd sJ |d}|jjd sJ |jd}|jjd rJ |jjd sJ d}tjt|d |d	 W d    n1 s
0    Y  |d d d }|jjd r4J |jjd rFJ | jjd s\J | jjd rrJ |d
jjd sJ |d
jjd rJ |djjd rJ |djjd sJ |djjd sJ |djjd rJ 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flagsrD   r   r+   r,   r-   )r   r   r   r'   rG   Zarr_ncr   r   r   test_copy_order  s8    

*z$NDArrayBacked2DTests.test_copy_orderN)r&   re   rf   rn   r   r   r   r   rh     s   rh   )__doc__numpyr1   r+   Zpandas._libs.missingr   Zpandasr   Zpandas.core.arrays.integerr   Z pandas.tests.extension.base.baser   r   rh   r   r   r   r   <module>   s    v