a
    Pf.                     @   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)Zautousec                 C   s2   |j s.|j}|j}|jdr.t| d d S )Nr   z does not support 2D.)Z_supports_2dnode_obj__qualname__
startswithpytestskip)selfdtyperequestr   Z	test_func r   Y/var/www/ai-form-bot/venv/lib/python3.9/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sFJ 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   pdZ	DataFrametmZ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}t|| d S )Nr   r   r   r   )r   r   Z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   Z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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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 sH0    Y  tt |d  W d    n1 sz0    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   r4   
IndexErrornpZ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 ]J}t|t|sHJ |j|jksXJ |jdksfJ t||jd ks2J q2d S )Nr   r   r   )	r   listiterr3   r   
isinstancer.   r   ndim)r   r   r   Z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 sBJ ||ksNJ d S )Nr   r   c                 s   s   | ]}t |tV  qd S )N)r=   r;   ).0xr   r   r   	<genexpr>       z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>)r   tolistr=   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}t|| |j||gdd}|jt|dfksJ t|d d d df | t|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   r3   r   r4   r5   )r   r   leftrightr#   r   msgr   r   r   test_concat_2d   s    zDim2CompatTests.test_concat_2dmethodZ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   rJ |d   sJ |j|d d}|d d d j|d ddd}t|| d S )Nr   r   r   )rP   limit)rP   r   )r   r   ZisnarF   anyZ_pad_or_backfillr   r!   )	r   Zdata_missingrP   Zarrr#   r   Zarr2Zresult2Z	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 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   rP   r   Zerr_expectedZ
err_resultr   errr#   err2r   r   r   test_reductions_2d_axis_none   s     0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 rBd|d< n|dv rR||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 rn|}
|jjdv r:|	|j}|	|}
||
jks:J |dkr`|dkrRdnd}|

|}
t||
 nl|dkr|}
t||
 nP|dv rt|st|r|	d}|dkrt|| nt|||  d S )Nr   )rY   rZ   zmin_count not relevant for r   )rX   rW   r   Zddof)rZ   rY   r`   r'   'Both reductions should raise or neitherc                 S   s8   | j dkr| S | jdv r&ttt S ttd S d S )N   ZibZuint)itemsizekindr   r9   r   int)r   r   r   r   get_reduction_result_dtype   s
    

zLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtypeZiubrZ   rV   )rU   rX   rW   ZFloat64rU   )r   r   r   r[   r\   r.   AssertionErrorr   rd   ZastypeZfillnar   r!   r   r   )r   r   rP   r`   r   kwargsr#   r]   r^   rf   r   r   Z
fill_valuer   r   r   test_reductions_2d_axis0   sJ    
"








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&   ra   )r   r   )r   r[   r\   r.   rg   r   r   )	r   r   rP   r   r#   r]   r^   Zexpected_scalarr0   r   r   r   test_reductions_2d_axis1  s    "z(Dim2CompatTests.test_reductions_2d_axis1N)r/   
__module__r	   r   Zfixturer   r   r    r$   r)   r*   r1   r6   r:   r@   rG   rO   markZparametrizerT   r_   ri   rj   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 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'\)rI   QC)	r   r   Z_ndarrayflagsrK   r   r   r4   r5   )r   r   r   r0   rN   Zarr_ncr   r   r   test_copy_order/  s8    

*z$NDArrayBacked2DTests.test_copy_orderN)r/   rk   r	   rs   r   r   r   r   rm   ,  s   rm   )__doc__numpyr9   r   Zpandas._libs.missingr   Zpandas.core.dtypes.commonr   r   Zpandasr   Zpandas._testingZ_testingr   Zpandas.core.arrays.integerr   r   rm   r   r   r   r   <module>   s     