a
    é´«jØ.  ã                   @   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   ú_/var/www/html/laksyashrimp/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 s–0    Y  t t¡� |  |jd¡ W d   ƒ n1 sÎ0    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   Ú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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   ƒ n1 sò0    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  ¡  ¡ r�J ‚|d  ¡  ¡ s¤J ‚|j|d d�}|d d d… j|d�  d¡ dd¡}t ||¡ d S )Nr   r   r   )rQ   Úlimit)rQ   r   )r   r   ZisnarG   ÚanyZ_pad_or_backfillr   r!   )	r   Zdata_missingrQ   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rÄt|ƒt|ƒksÀJ ‚d S t||ƒsÚ||ksÚJ ‚d S )Nr   r   r&   )r   ÚgetattrÚ	Exceptionr.   r   )
r   r   rQ   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s²J ‚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 �rÚt|ƒ�s¨t|ƒ�r²| 	d¡}|dk�rÊt ||¡ nt ||| ¡ d S )Nr   )rZ   r[   zmin_count not relevant for r   )rY   rX   r   Zddof)r[   rZ   ra   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é   Ú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iubr[   rW   )rV   rY   rX   ZFloat64rV   )r   r   r   r\   r]   r.   ÚAssertionErrorr   rf   ZastypeZfillnar   r!   r   r   )r   r   rQ   ra   r   Úkwargsr#   r^   r_   rh   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s²J ‚t||ƒƒ }|d }t||ƒsÜ||ksÜJ ‚d S )Nr   r   r&   rb   )r   r   )r   r\   r]   r.   ri   r   r   )	r   r   rQ   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:   rA   rH   rP   ÚmarkZparametrizerU   r`   rk   rl   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 r€J ‚|jjd s�J ‚| d¡}|jjd sªJ ‚|j d¡}|jjd rÆJ ‚|jjd sÖJ ‚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 �sŠJ ‚| d
¡jjd �r¢J ‚| d¡jjd �rºJ ‚| d¡jjd �sÒJ ‚| d¡jjd �sêJ ‚| 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'\)rJ   ÚQÚC)	r   r   Z_ndarrayÚflagsrL   r   r   r4   r5   )r   r   r   r0   rO   Zarr_ncr   r   r   Útest_copy_order/  s8    

*z$NDArrayBacked2DTests.test_copy_orderN)r/   rm   r	   ru   r   r   r   r   ro   ,  s   ro   )Ú__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   ro   r   r   r   r   Ú<module>   s     