o
    g;                     @   s<   d Z ddlZddlZddlZddlmZ G dd deZdS )z
Tests for 2D compatibility.
    N)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
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   s4   | ddd}|dd}|j}| || d S )N   r      )repeatreshapeswapaxesTassert_extension_array_equalselfdataarr2dresultexpected r   ^/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/extension/base/dim2.py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_2d    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sJ | d}|j|jdfks)J t|t|ks3J tt | |jdf W d    n1 sKw   Y  tt | |jd W d    d S 1 shw   Y  d S )Nr   r   )r   r   r   )r   shapesizelenpytestraises
ValueError)r   r   r   r   r   r   test_reshape0   s   
"zDim2CompatTests.test_reshapec                 C   s  | dd}|d }| || tt |d  W d    n1 s$w   Y  tt |d  W d    n1 s=w   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npnewaxisr
   r   r   r   r   test_getitem_2d>   s$   


zDim2CompatTests.test_getitem_2dc                 C   s   | dd}tt|}t||jd ksJ |D ]%}t|t|s$J |j|jks,J |jdks3J t||jd ks>J qd S )Nr   r   r   )	r   listiterr%   r#   
isinstancer   dtypendim)r   r   r   objsobjr   r   r   test_iter_2dX   s   zDim2CompatTests.test_iter_2dc                 C   s   | dd}| }|j||gdd}|||g dd}| || |j||gdd}|d dd}| || tt |j||gdd W d    d S 1 sVw   Y  d S )Nr   r   r   r   r   )r   copy_concat_same_typer   r   r&   r'   r(   )r   r   leftrightr   r   r   r   r   test_concat_2dd   s   "zDim2CompatTests.test_concat_2dmethod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   )r<   )r   r   isnaallanyfillnar   )r   data_missingr<   arrr   r   r   r   r   test_fillna_2d_methodv   s   z%Dim2CompatTests.test_fillna_2d_method)meanmedianvarstdsumprodc                 C   s   t ||s
td |dd}d }d }zt|| }W n3 tyO } z'|}z
t||d d}	W n tyD }
 z|
}W Y d }
~
nd }
~
ww W Y d }~nd }~ww t||d d}	|d us`|d urlt|t|ksjJ d S |	|ksrJ d S )N*test is not applicable for this type/dtyper   r   r   )hasattrr&   skipr   getattr	Exceptionr   )r   r   r<   requestr   err_expected
err_resultr   errr   err2r   r   r   test_reductions_2d_axis_none   s,   

	z,Dim2CompatTests.test_reductions_2d_axis_nonec                 C   s  t ||s
td |dd}i }|dkrd|d< zt||dddi|}W n: tyb } z.zt||  W td ty] } zt|t|ksMJ W Y d }~W Y d }~d S d }~ww d }~ww |d	v r|}	|d
v r|jj	dv r|jj	dkr}t
j}
nt
j}
||
}	t|	t|krtjjdd}|j| t|	t|ksJ t|	|
|	jksJ | ||	 d S |dkr| |||  d S d S )NrL   r   r   rI   r   ddofr   'Both reductions should raise or neither)rF   rG   rJ   rK   )rJ   rK   )iurY   z&IntegerArray.astype is broken GH#38983)reasonr   )rM   r&   rN   r   rO   rP   r   AssertionErrorr2   kindpd
Int64DtypeUInt64Dtypeastypemarkxfailnode
add_markerr   )r   r   r<   rQ   r   kwargsr   rT   rU   r   r2   rb   r   r   r   test_reductions_2d_axis0   sJ   

	
z(Dim2CompatTests.test_reductions_2d_axis0c           	      C   s   t ||s
td |dd}z
t||dd}W n: tyT } z.zt||  W td tyO } zt|t|ks?J W Y d }~W Y d }~d S d }~ww d }~ww |jdks\J t|| }t	
|d rtt	
|srJ |d S |d |ks|J d S )NrL   r   r   r   rX   )r   r   )rM   r&   rN   r   rO   rP   r   r\   r#   r^   r?   )	r   r   r<   rQ   r   r   rT   rU   expected_scalarr   r   r   test_reductions_2d_axis1   s*   


z(Dim2CompatTests.test_reductions_2d_axis1N)r    
__module____qualname__r   r   r   r"   r)   r.   r6   r;   r&   rb   parametrizerE   rV   rg   ri   r   r   r   r   r      s"    



.r   )	__doc__numpyr,   r&   pandasr^    pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s    