
    o[we,                         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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 )Dim2CompatTestsc                     |                     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)selfdataarr2dr   s       @lib/python3.11/site-packages/pandas/tests/extension/base/dim2.pytest_transposezDim2CompatTests.test_transpose   sf    A&&r1--Qx59$$$$w}ddd++++++    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_swapaxes%   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_2d,   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   r'   )r   taker   r!   r"   s        r   test_take_2dzDim2CompatTests.test_take_2d9   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_2dA   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lenpytestraises
ValueError)r   r   r   s      r   test_reshapezDim2CompatTests.test_reshapeI   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!   r9   r:   
IndexErrornpnewaxisr   r"   s        r   test_getitem_2dzDim2CompatTests.test_getitem_2dW   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iterr8   r   
isinstancer2   dtypendim)r   r   r   objsobjs        r   test_iter_2dzDim2CompatTests.test_iter_2dq   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)rF   rD   ).0xs     r   	<genexpr>z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>   s,      771:a&&777777r   )r   tolistrF   rD   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   r'      r   z0axis 2 is out of bounds for array of dimension 2match)r2   _concat_same_typer   copyr   r!   r   r8   r9   r:   r;   )r   r   leftrightr#   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   )r^   limit)r^   r   )r   r   isnarR   any_pad_or_backfillr   r!   )	r   data_missingr^   arrr#   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   r'   )r   getattr	Exceptionr2   r   )
r   r   r^   r   err_expected
err_resultr   r#   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   )rp   rq   zmin_count not relevant for r   )ro   rn   r   ddof)rq   rp   rz   r(   '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   r@   rG   int)rG   s    r   get_reduction_result_dtypezLDim2CompatTests.test_reductions_2d_axis0.<locals>.get_reduction_result_dtype   sM     ~""t##)"(3--88 *"(6*:*:;;r   iubrq   rm   )rl   ro   rn   Float64rl    )r9   skipr   rs   rt   AssertionErrorr2   rG   r   astypefillnar   r!   r   r   )r   r   r^   rz   r   kwargsr#   rw   rx   r   r   rG   
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   r'   r}   )r   r   )r   rs   rt   r   r2   r   r   )	r   r   r^   r   r#   rw   rx   expected_scalarr4   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)r3   
__module____qualname__r   r   r$   r*   r-   r5   r<   rB   rK   rS   r]   r9   markparametrizerk   ry   r   r   r   r   r   r   r      s       , , ,, , ,: : :: : :: : :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'\)rV   QC)	r   r   _ndarrayflagsrY   r   r9   r:   r;   )r   r   r   r4   r\   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)r3   r   r   r   r   r   r   r   r   !  s(        *C *C *C *C *Cr   r   )__doc__numpyr@   r9   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KN KN KN KN KN KN KN KN\-C -C -C -C -C? -C -C -C -C -Cr   