o
    ŀg.                     @   sr   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ZG dd	 d	eZdS )
z
Tests for 2D compatibility.
    N)is_matching_na)is_bool_dtypeis_integer_dtype)NUMPY_INT_TO_DTYPEc                   @   s   e Zd Zejdd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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 ejd#d$d%gd&d' Zejdg d d(d) Zd*S )+Dim2CompatTestsT)autousec                 C   s:   |j s|j}|j}|jdrt| d d S d S d S )Nr   z does not support 2D.)_supports_2dnode_obj__qualname__
startswithpytestskip)selfdtyperequestr	   	test_func r   T/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/extension/base/dim2.pyskip_if_doesnt_support_2d   s   z)Dim2CompatTests.skip_if_doesnt_support_2dc                 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)r   dataarr2dr   r   r   r   test_transpose"   s   zDim2CompatTests.test_transposec                 C   sT   | ddd}t|}t|d d df |d d df d}t|| d S )Nr   r   r      )r   r   )r   r   pd	DataFrametm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}t|| d S )Nr   r   r   r   )r   r   swapaxesr   r"   assert_extension_array_equalr   r   r   resultr%   r   r   r   test_swapaxes0   s   zDim2CompatTests.test_swapaxesc                 C   st   | ddd}|jddd}|d ddd}t|| |jddd}| ddd}t|| d S )N   r   r   r   axisr   )r   r   deleter"   r(   r)   r   r   r   test_delete_2d7   s   zDim2CompatTests.test_delete_2dc                 C   sD   | dd}|jg ddd}|g d dd}t|| d S )Nr   r   )r   r   r   r   r-   )r   taker"   r(   r)   r   r   r   test_take_2dD   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_2dL   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lenr   raises
ValueError)r   r   r   r   r   r   test_reshapeT   s   
"zDim2CompatTests.test_reshapec                 C   s  | dd}|d }t|| tt |d  W d    n1 s$w   Y  tt |d  W d    n1 s=w   Y  |d d  }t|| |d d d d f }t|| |d d df }|dg }t|| |d d tjf }t||j d S )Nr   r   r   )	r   r"   r(   r   r<   
IndexErrornpnewaxisr   r)   r   r   r   test_getitem_2db   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   
isinstancer6   r   ndim)r   r   r   objsobjr   r   r   test_iter_2d|   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)rF   rD   ).0xr   r   r   	<genexpr>   s    z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>)r   tolistrF   rD   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}t|| |j||gdd}|jt|dfks@J t|d d d df | t|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)r6   _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methodbackfillpadc           	      C   s   | ddd}|d   sJ |d   rJ |j|d d}|j|d ddd}t|| |d d d }|d   rHJ |d   sRJ |j|d d}|d d d j|d ddd}t|| d S )Nr   r   r   )rZ   limit)rZ   r   )r   r   isnarO   any_pad_or_backfillr"   r(   )	r   data_missingrZ   arrr*   r%   arr2result2	expected2r   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	Exceptionr6   r   )
r   r   rZ   r   err_expected
err_resultr%   errr*   err2r   r   r   test_reductions_2d_axis_none   s(   	z,Dim2CompatTests.test_reductions_2d_axis_none	min_countr   r   c                 C   s  |dkr|dvrt d|  |dd}i }|dv r!d|d< n|dv r)||d	< zt||dd
di|}W n: tyq } z.zt||  W td tyl } zt|t|ks\J W Y d }~W Y d }~d S d }~ww d }~ww dd }	|dv r|}
|jjdv r|	|j}|	|}
||
jksJ |dkr|dkrdnd}|

|}
t||
 d S |dkr|}
t||
 d S |dv rt|st|r|	d}|dkrt|| d S t|||  d S d S )Nr   )rk   rl   zmin_count not relevant for r   )rj   ri   r   ddof)rl   rk   rt   r.   'Both reductions should raise or neitherc                 S   s4   | j dkr| S | jdv rttt S ttd S )N   ibuint)itemsizekindr   rA   r   int)r   r   r   r   get_reduction_result_dtype   s
   

zLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtypeiubrl   rh   )rg   rj   ri   Float64rg   r   )r   r   r   rm   rn   r6   AssertionErrorr   r{   astypefillnar"   r(   r   r   )r   r   rZ   rt   r   kwargsr*   rq   rr   r}   r%   r   
fill_valuer   r   r   test_reductions_2d_axis0   sT   
	



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-   rv   )r   r   )r   rm   rn   r6   r   r   r   )	r   r   rZ   r   r*   rq   rr   expected_scalarr8   r   r   r   test_reductions_2d_axis1  s$   
z(Dim2CompatTests.test_reductions_2d_axis1N)r7   
__module__r   r   fixturer   r   r&   r+   r0   r2   r9   r>   rC   rJ   rP   rY   markparametrizerf   rs   r   r   r   r   r   r   r      s.    




<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'\)rR   QC)	r   r   _ndarrayflagsrU   r   r   r<   r=   )r   r   r   r8   rX   arr_ncr   r   r   test_copy_order/  s:   

z$NDArrayBacked2DTests.test_copy_orderN)r7   r   r   r   r   r   r   r   r   ,  s    r   )__doc__numpyrA   r   pandas._libs.missingr   pandas.core.dtypes.commonr   r   pandasr    pandas._testing_testingr"   pandas.core.arrays.integerr   r   r   r   r   r   r   <module>   s      