o
    Û­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)Ú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   ú]/var/www/html/CropPilot/venv/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s“J ‚|dkr¤|dkr�dnd}|
 
|¡}
t ||
¡ d S |dkrº|}
t ||
¡ d S |dv rát|ƒsÆt|ƒrË| 	d¡}|dkr×t ||¡ 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 s„w   Y  |d d d… }|jjd r˜J ‚|jjd r J ‚| ¡ jjd sªJ ‚| ¡ jjd r´J ‚| 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   Ú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      