
    bMh.                         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          Z G 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                      e Zd Z ej        d          d             Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej                            dddg          d             Zej                            dg d          d             Zej                            dg d          ej                            dddg          d                         Zej                            dg d          d             ZdS )Dim2CompatTestsT)autousec                     |j         sA|j        }|j        }|j                            d          rt          j        | 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_funcs        `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/extension/base/dim2.pyskip_if_doesnt_support_2dz)Dim2CompatTests.skip_if_doesnt_support_2d   sj    ! 	=<D 	I%001BCC =u;;;<<<<<	= 	=
= =    c                     |                     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   s       r   test_transposezDim2CompatTests.test_transpose"   sf    A&&r1--Qx59$$$$w}ddd++++++r   c                     |                     d                              dd          }t          j        |          }t          j        |d d df         |d d df         d          }t	          j        ||           d S )Nr   r   r      )r   r$   )r   r   pd	DataFrametmassert_frame_equal)r   r    r!   dfexpecteds        r   test_frame_from_2d_arrayz(Dim2CompatTests.test_frame_from_2d_array)   sx    A&&r1--\%  <E!!!Q$KE!!!Q$K @ @AA
b(+++++r   c                     |                     d                              dd          }|                    dd          }|j        }t	          j        ||           d S )Nr   r   r   r$   )r   r   swapaxesr   r'   assert_extension_array_equalr   r    r!   resultr*   s        r   test_swapaxeszDim2CompatTests.test_swapaxes0   sT    A&&r1--1%%7
'99999r   c                    |                     d                              dd          }|                    dd          }|                    d                               d                              dd          }t          j        ||           |                    dd          }|                     d                              dd          }t          j        ||           d S )N   r   r$   r   axisr   )r   r   deleter'   r.   r/   s        r   test_delete_2dzDim2CompatTests.test_delete_2d7   s    A&&r1-- aa((;;q>>((++33B::
'999 aa((;;q>>))"a00
'99999r   c                     |                     dd          }|                    g dd          }|                    g d                               dd          }t          j        ||           d S )Nr   r$   )r   r   r   r   r4   )r   taker'   r.   r/   s        r   test_take_2dzDim2CompatTests.test_take_2dD   sl    R##JJJQ//99ZZZ((00Q77
'99999r   c                 R   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    ress      r   test_repr_2dzDim2CompatTests.test_repr_2dL   s    4<<2&&''yy2T$ZZ02233q88884<<A&&''yy2T$ZZ02233q888888r   c                 h   |                     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    sJ t	          j        t                    5  |                     |j        df           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     |j        d           d d d            d S # 1 swxY w Y   d S )Nr   r$   )r   r$   r   )r   r   sizelenr   raises
ValueError)r   r    r!   s      r   test_reshapezDim2CompatTests.test_reshapeT   s   R##{ty!n,,,,5zzSYY&&&&W%%{ty!n,,,,5zzSYY&&&&]:&& 	) 	)LL$)Q(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]:&& 	' 	'LLA&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's$   1CC!C>D''D+.D+c                    |                     dd          }|d         }t          j        ||           t          j        t
                    5  |d          d d d            n# 1 swxY w Y   t          j        t
                    5  |d          d d d            n# 1 swxY w Y   |d d          }t          j        ||           |d d d d f         }t          j        ||           |d d df         }|dg         }t          j        ||           |d d t          j        f         }t          j        ||j                   d S )Nr$   r   r   )	r   r'   r.   r   rF   
IndexErrornpnewaxisr   r/   s        r   test_getitem_2dzDim2CompatTests.test_getitem_2db   s   Q##q
'555]:&& 	 	!HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:&& 	 	"II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 qqq
'666qqq!!!t
'666qqq!t9
'999 aaam$
'88888s$   	A""A&)A&	BB"Bc                 p   |                     dd          }t          t          |                    }t          |          |j        d         k    sJ |D ]`}t          |t          |                    sJ |j        |j        k    sJ |j        dk    sJ t          |          |j        d         k    sJ ad S )Nr$   r   r   )	r   listiterrE   r   
isinstancer?   r   ndim)r   r    r!   objsobjs        r   test_iter_2dzDim2CompatTests.test_iter_2d|   s    Q##DKK  4yyEKN**** 	. 	.Cc4::.....9
****8q====s88u{1~-----		. 	.r   c                     |                     dd          }|                                }|                                g}t          |t                    sJ t	          d |D                       sJ ||k    sJ d S )Nr$   r   c              3   @   K   | ]}t          |t                    V  d S )N)rR   rP   ).0xs     r   	<genexpr>z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>   s,      771:a&&777777r   )r   tolistrR   rP   allr/   s        r   test_tolist_2dzDim2CompatTests.test_tolist_2d   s    Q##KKMM?&$'''''7777777777!!!!!!r   c                    t          |                              ||g                              dd          }|                                }|                    ||gd          }|                    |gdz                                dd          }t	          j        ||           |                    ||gd          }|j        t          |          dfk    sJ t	          j        |d d d df         |           t	          j        |d d dd f         |           d}t          j	        t          |          5  |                    ||gd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r4      r$   z0axis 2 is out of bounds for array of dimension 2match)r?   _concat_same_typer   copyr'   r.   r   rE   r   rF   rG   )r   r    leftrightr0   r*   msgs          r   test_concat_2dzDim2CompatTests.test_concat_2d   s   Dzz++T4L99AA"aHH		 ''uA'>>))4&1*55==b!DD
'999 ''uA'>>|D		1~----
'qqq"1"ut<<<
'qqq!""uu=== A]:S111 	: 	:""D%=q"999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   <E##E'*E'methodbackfillpadc                    |                     d                              dd          }|d                                                                         sJ |d                                                                         rJ |                    |d           }|                    |                               d                              dd          }t          j        ||           |d d d         }|d                                                                         rJ |d                                                                         sJ |                    |d           }|d d d                             |                               d                              dd          }t          j        ||           d S )Nr   r   r$   )ri   limit)ri   r   )r   r   isnar]   any_pad_or_backfillr'   r.   )	r   data_missingri   arrr0   r*   arr2result2	expected2s	            r   test_fillna_2d_methodz%Dim2CompatTests.test_fillna_2d_method   s    !!!$$,,Q221v{{}}  """""q6;;==$$&&&&&%%V4%@@000??FFqIIQQRSUVWW
'999 44R4y7<<>>%%'''''Aw||~~!!#####''vT'BB 2//v/>>EEaHHPPQRTUVV 	 	';;;;;r   )meanmedianvarstdsumprodc                    |                     dd          }d }d }	  t          ||                      } t          ||          d           }nN# t          $ rA}|}	  t          ||          d           }n# t          $ r}	|	}Y d }	~	nd }	~	ww xY wY d }~nd }~ww xY w||$t          |          t          |          k    sJ d S t	          ||          s||k    sJ d S d S )Nr$   r   r4   )r   getattr	Exceptionr?   r   )
r   r    ri   r!   err_expected
err_resultr*   r0   errerr2s
             r   test_reductions_2d_axis_nonez,Dim2CompatTests.test_reductions_2d_axis_none   s6   Q##
	7,wtV,,..H ,WUF++666FF  	" 	" 	"L"///T::: " " "!





"	" !\%=
##tL'9'99999Ffh//E6X3E3E3E3EEE3E3EsA   A 
BBA76B7
BBBBBB	min_countr   r$   c                    |dk    r|dvrt          j        d|            |                    dd          }i }|dv rd|d<   n	|dv r||d	<   	  t          ||          dd
di|}nx# t          $ rk}	  t          ||                       t          d          # t          $ r1}t          |          t          |          k    sJ Y d }~Y d }~d S d }~ww xY wd }~ww xY wd }	|dv r~|}
|j        j        dv r2 |	|j                  }|	                    |          }
||
j        k    sJ |dk    r|dk    rdnd}|

                    |          }
t          j        ||
           d S |dk    r|}
t          j        ||
           d S |dv rjt          |          st          |          r|	                    d          }|dk    rt          j        ||           d S t          j        |||z
             d S d S )Nr$   )r{   r|   zmin_count not relevant for r   )rz   ry   r   ddof)r|   r{   r   r5   'Both reductions should raise or neitherc                     | j         dk    r| S | j        dv r$t          t          j        t
                             S t          t          j        d                   S )N   ibuint)itemsizekindr   rL   r   int)r   s    r   get_reduction_result_dtypezLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtype   sM     ~""t##)"(3--88 *"(6*:*:;;r   iubr|   rx   )rw   rz   ry   Float64rw    )r   r   r   r~   r   AssertionErrorr?   r   r   astypefillnar'   r.   r   r   )r   r    ri   r   r!   kwargsr0   r   r   r   r*   r   
fill_values                r   test_reductions_2d_axis0z(Dim2CompatTests.test_reductions_2d_axis0   s    >>fO;;K>f>>???Q##^##F6NN&&"+F;		P+WUF++===f==FF 	P 	P 	PP%f%%'''
 %%NOOO	    CyyDJJ....	P		< 		< 		< _$$Hz%''224:>>;;u--....A~~"(F"2"2QQ
#??:66+FH=====xH+FH=====---%% .t)<)< .{{9--/=====/tDDDDD .-s<   A' '
C2B
C
C#"CCCCCc                    |                     dd          }	  t          ||          d          }nx# t          $ rk}	  t          ||                       t          d          # t          $ r1}t	          |          t	          |          k    sJ Y d }~Y d }~d S d }~ww xY wd }~ww xY w|j        dk    sJ  t          ||                      }|d         }t          ||          s||k    sJ d S d S )Nr$   r   r4   r   )r$   r   )r   r~   r   r   r?   r   r   )	r   r    ri   r!   r0   r   r   expected_scalarrA   s	            r   test_reductions_2d_axis1z(Dim2CompatTests.test_reductions_2d_axis1  s?   Q##		P+WUF++333FF 	P 	P 	PP%f%%'''
 %%NOOO	    CyyDJJ....	P |t####/'$//11Qic?33Mso7M7M7M7MMM7M7Ms8   3 
B(A%B#%
B /"BB#B  B##B(N)r@   
__module__r   r   fixturer   r"   r+   r1   r7   r:   rB   rH   rN   rV   r^   rh   markparametrizerv   r   r   r   r   r   r   r   r      s        V^D!!!= = "!=, , ,, , ,: : :: : :: : :9 9 9' ' '9 9 94
. 
. 
.	" 	" 	": : :( [X
E':;;< < <;<. [X'V'V'VWWF F XWF0 [X'V'V'VWW[[1a&11:E :E 21 XW:Ex [X'V'V'VWWN N XWN N Nr   r   c                       e Zd Zd ZdS )NDArrayBacked2DTestsc                    |                     d                              dd          }|j        j        d         sJ |                                }|j        j        d         sJ |d d dd d df                                         }|j        j        d         sJ |                    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          |          5  |                    d	           d d d            n# 1 swxY 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'\)ra   QC)	r   r   _ndarrayflagsrd   r   r   rF   rG   )r   r    r!   rA   rg   arr_ncs         r   test_copy_orderz$NDArrayBacked2DTests.test_copy_order/  s   A&&r1--~#N3333jjll|!.1111CCaC1Ho""$$|!.1111jjoo<%n5555|!.1111jjoo|!.1111gll3<%n5555|!.1111 H]:S111 	 	JJsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 sss?(8888?(8888{{}}%+N;;;;;;==)/????{{3(.~>>>>;;s##,2>BBBB;;s##,2>BBBB{{3(.~>>>>{{3(.~>>>>;;s##,2>BBBBBBs   !FF
FN)r@   r   r   r   r   r   r   r   r   ,  s(        *C *C *C *C *Cr   r   )__doc__numpyrL   r   pandas._libs.missingr   pandas.core.dtypes.commonr   r   pandasr%   pandas._testing_testingr'   pandas.core.arrays.integerr   r   r   r   r   r   <module>r      s	         / / / / / /       
           9 9 9 9 9 9VN VN VN VN VN VN VN VNr-C -C -C -C -C? -C -C -C -C -Cr   