o
    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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s#J d S )N   r   )repeatreshapeshapeT)selfdataarr2dr    r   e/var/www/html/visualizacion-main/env/lib/python3.10/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   pd	DataFrame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   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_2d9   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_2dA   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   r   size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 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   r0   r1   
IndexErrornp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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_2dq   s   zDim2CompatTests.test_iter_2dc                 C   sR   | dd}| }| g}t|tsJ tdd |D s!J ||ks'J d S )Nr   r	   c                 s   s    | ]}t |tV  qd S )N)r;   r9   ).0xr   r   r   	<genexpr>   s    z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>)r   tolistr;   r9   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@J | |d d d df | | |d d dd f | d}tjt	|d |j||gdd W d    d S 1 szw   Y  d S )	Nr	   r   r   r!      r   z0axis 2 is out of bounds for array of dimension 2match)
r*   _concat_same_typer   copyr   r   r/   r0   r1   r2   )r   r   leftrightr   r   msgr   r   r   test_concat_2d   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   )rP   )r
   r   isnarE   anyfillnar   )r   data_missingrP   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 n3 tyE } z'|}z
t||d d}W n ty: }	 z|	}W Y d }	~	nd }	~	ww W Y d }~nd }~ww t||d d}|d usV|d urbt|t|ks`J d S t||sm||ksoJ d S d S )Nr   r	   r!   )r   getattr	Exceptionr*   r   )
r   r   rP   r   err_expected
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v rd|d< zt||dddi|}W n: tyX } z.zt||  W td tyS } zt|t|ksCJ W Y d }~W Y d }~d S d }~ww d }~ww dd	 }|d
v r|}	|dv r|jjdv r||j}
||
}	|jjdkr|dv rnt|	t|ksJ t|	|
|	jksJ | ||	 d S |dv rt	|st
|r|d}|dkr| || d S | |||  d S d S )Nr   r	   )r\   r[   r   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 )N   ib)itemsizekindr   r6   r<   intnameuint)r<   r   r   r   get_reduction_result_dtype   s
   

zLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtype)rZ   r]   r^   )r]   r^   iubb)rY   r\   r[   Float64rY   r   )r   r_   r`   r*   AssertionErrorr<   rk   astyper   r   r   )r   r   rP   r   kwargsr   rc   rd   ro   r   r<   r   r   r   test_reductions_2d_axis0   sF   	


z(Dim2CompatTests.test_reductions_2d_axis0c           	      C   s   | dd}z
t||dd}W n: tyJ } z.zt||  W td tyE } zt|t|ks5J W Y d }~W Y d }~d S d }~ww d }~ww |jdksRJ t|| }|d }t||sg||ksiJ d S d S )Nr   r	   r!   rg   )r   r   )r   r_   r`   r*   rs   r   r   )	r   r   rP   r   r   rc   rd   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-   r3   r8   r@   rF   rO   r0   markparametrizerX   re   rv   rx   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J | }|jjd sJ |d d dd d df  }|jjd s3J |d}|jjd r@J |jjd sHJ |d}|jjd sUJ |jd}|jjd rcJ |jjd skJ d}tjt|d |d	 W d    n1 sw   Y  |d d d }|jjd rJ |jjd rJ | jjd sJ | jjd rJ |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 rJ d S )Nr   r	   C_CONTIGUOUSFF_CONTIGUOUSKz6order must be one of 'C', 'F', 'A', or 'K' \(got 'Q'\)rH   QC)	r
   r   _ndarrayflagsrK   r   r0   r1   r2   )r   r   r   r,   rN   arr_ncr   r   r   test_copy_order  s:   

z$NDArrayBacked2DTests.test_copy_orderN)r+   ry   rz   r   r   r   r   r   r}     s    r}   )__doc__numpyr6   r0   pandas._libs.missingr   pandas.core.dtypes.commonr   r   pandasr   pandas.core.arrays.integerr    pandas.tests.extension.base.baser   r   r}   r   r   r   r   <module>   s     z