
    Owg.                     ~    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y)
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"                  j%                  dddg      d        Zej"                  j%                  dg d      d        Zej"                  j%                  dg d      ej"                  j%                  dddg      d               Zej"                  j%                  dg d      d        Zy)Dim2CompatTestsT)autousec                     |j                   sM|j                  }|j                  }|j                  j	                  d      rt        j                  | d       y y y )Nr   z does not support 2D.)_supports_2dnode_obj__qualname__
startswithpytestskip)selfdtyperequestr   	test_funcs        W/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/extension/base/dim2.pyskip_if_doesnt_support_2dz)Dim2CompatTests.skip_if_doesnt_support_2d   sS    !!<<D 		I%%001BCug%:;< D "    c                     |j                  d      j                  dd      }|j                  }|d   |d   k7  sJ |j                  j                  |d d d   k(  sJ y )N   r   )repeatreshapeshapeT)r   dataarr2dr   s       r   test_transposezDim2CompatTests.test_transpose"   sY    A&&r1-Qx59$$$ww}}dd+++r   c                     |j                  d      j                  dd      }t        j                  |      }t        j                  |d d df   |d d df   d      }t	        j
                  ||       y )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)   s]    A&&r1-\\% <<E!Q$KE!Q$K @A
b(+r   c                     |j                  d      j                  dd      }|j                  dd      }|j                  }t	        j
                  ||       y )Nr   r   r   r$   )r   r   swapaxesr   r'   assert_extension_array_equalr   r    r!   resultr*   s        r   test_swapaxeszDim2CompatTests.test_swapaxes0   sE    A&&r1-1%77
''9r   c                    |j                  d      j                  dd      }|j                  dd      }|j                  d      j                  d      j                  dd      }t        j                  ||       |j                  dd      }|j                  d      j                  dd      }t        j                  ||       y )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 aa(;;q>))"a0
''9r   c                     |j                  dd      }|j                  g dd      }|j                  g d      j                  dd      }t        j                  ||       y )Nr   r$   )r   r   r   r   r4   )r   taker'   r.   r/   s        r   test_take_2dzDim2CompatTests.test_take_2dD   sO    R#JQ/99Z(00Q7
''9r   c                     t        |j                  dd            }|j                  dt        |      j                         dk(  sJ t        |j                  dd            }|j                  dt        |      j                         dk(  sJ y )Nr$   r   <)reprr   counttype__name__)r   r    ress      r   test_repr_2dzDim2CompatTests.test_repr_2dL   s~    4<<2&'yy1T$Z00123q8884<<A&'yy1T$Z00123q888r   c                 L   |j                  dd      }|j                  |j                  dfk(  sJ t        |      t        |      k(  sJ |j                  d      }|j                  |j                  dfk(  sJ t        |      t        |      k(  sJ t	        j
                  t              5  |j                  |j                  df       d d d        t	        j
                  t              5  |j                  |j                  d       d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)Nr   r$   )r   r$   r   )r   r   sizelenr   raises
ValueError)r   r    r!   s      r   test_reshapezDim2CompatTests.test_reshapeT   s    R#{{tyy!n,,,5zSY&&&W%{{tyy!n,,,5zSY&&&]]:& 	)LL$))Q(	)]]:& 	'LLA&	' 	'	) 	)	' 	's   )D(DDD#c                 Z   |j                  dd      }|d   }t        j                  ||       t        j                  t
              5  |d    d d d        t        j                  t
              5  |d    d d d        |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                         y # 1 sw Y   xY w# 1 sw Y   xY w)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]]:& 	!H	 ]]:& 	"I	 q
''6q!t
''6q!t9
''9 am$
''8%	 		 	s   D.D!D!D*c                 X   |j                  dd      }t        t        |            }t        |      |j                  d   k(  sJ |D ]b  }t        |t        |            sJ |j                  |j                  k(  sJ |j                  dk(  sJ t        |      |j                  d   k(  rbJ  y )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K 4yEKKN*** 	.Cc4:...99

***88q= =s8u{{1~---		.r   c                     |j                  dd      }|j                         }|j                         g}t        |t              sJ t	        d |D              sJ ||k(  sJ y )Nr$   r   c              3   <   K   | ]  }t        |t                y w)N)rR   rP   ).0xs     r   	<genexpr>z1Dim2CompatTests.test_tolist_2d.<locals>.<genexpr>   s     71:a&7s   )r   tolistrR   rP   allr/   s        r   test_tolist_2dzDim2CompatTests.test_tolist_2d   s\    Q#KKM?&$'''77777!!!r   c                    t        |      j                  ||g      j                  dd      }|j                         }|j                  ||gd      }|j                  |gdz        j                  dd      }t	        j
                  ||       |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  |j                  ||gd       d d d        y # 1 sw Y   y xY w)	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-   Dz++T4L9AA"aH		 ''uA'>))4&1*5==b!D
''9 ''uA'>||D	1~---
''q"1"ut<
''q!"uu= A]]:S1 	:""D%=q"9	: 	: 	:s   D88Emethodbackfillpadc                    |j                  d      j                  dd      }|d   j                         j                         sJ |d   j                         j	                         rJ |j                  |d       }|j                  |      j                  d      j                  dd      }t        j                  ||       |d d d   }|d   j                         j	                         rJ |d   j                         j                         sJ |j                  |d       }|d d d   j                  |      j                  d      j                  dd      }t        j                  ||       y )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   sT    !!!$,,Q21v{{}  """q6;;=$$&&&%%V4%@000?FFqIQQRSUVW
''9 4R4y7<<>%%'''Aw||~!!###''vT'B 2//v/>EEaHPPQRTUV 	 	'';r   )meanmedianvarstdsumprodc                 h   |j                  dd      }d }d }	  t        ||             } t        ||      d       }||t        |      t        |      k(  sJ y t	              s||k(  sJ y y # t        $ r9}|}	  t        ||      d       }n# t        $ r}	|	}Y d }	~	nd }	~	ww xY wY d }~pd }~ww xY w)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   s    Q#
	7,wtV,.H ,WUF+6F!\%=
#tL'9999fh/6X3EEE3E/  	"L"//T: "!
"	"sA   A/ /	B18B,;BB,	B$BB,B$$B,,B1	min_countr   r$   c                    |dk(  r|dvrt        j                  d|        |j                  dd      }i }|dv rd|d<   n	|dv r||d	<   	  t        ||      dd
di|}d }	|dv r|}
|j                  j                  dv r4 |	|j                        }|j                  |      }
||
j                  k(  sJ |dk(  r|dk(  rdnd}|
j                  |      }
t        j                  ||
       y |dk(  r|}
t        j                  ||
       y |dv r]t        |      st        |      r|j                  d      }|dk(  rt        j                  ||       y t        j                  |||z
         y y # t        $ rU}	  t        ||              t        d      # t        $ r'}t        |      t        |      k(  sJ Y d }~Y d }~y d }~ww xY wd }~ww xY w)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   sJ     ~~"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;KK5fX>?Q#^#F6N&"+F;		P+WUF+==f=F		< _$Hzz%'24::>;;u-...A~"(F"2Q
#??:6++FH=xH++FH=--%t)<{{9-//=//tD .K  	PP%f%'
 %%NOO	  CyDJ...	Ps<   
E) )	G3FG	F?F:1G:F??GGc                    |j                  dd      }	  t        ||      d      }|j
                  dk(  sJ  t        ||             }|d   }t        ||      s||k(  sJ y y # t        $ rU}	  t        ||              t        d      # t        $ r'}t	        |      t	        |      k(  sJ Y d }~Y d }~y d }~ww xY wd }~ww xY w)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+3F ||t###/'$/1Qic?3so7MMM7M3  	PP%f%'
 %%NOO	  CyDJ...	Ps;   A# #	C-B	>B<		B9B4+B<4B99B<<C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'94
.	":( [[X
E':;< <<. [[X'VWF XF0 [[X'VW[[[1a&1:E 2 X:Ex [[X'VWN XNr   r   c                       e Zd Zd Zy)NDArrayBacked2DTestsc                 f   |j                  d      j                  dd      }|j                  j                  d   sJ |j	                         }|j                  j                  d   sJ |d d dd d df   j	                         }|j                  j                  d   sJ |j	                  d      }|j                  j                  d   rJ |j                  j                  d   sJ |j	                  d      }|j                  j                  d   sJ |j
                  j	                  d      }|j                  j                  d   rJ |j                  j                  d   sJ d}t        j                  t        |      5  |j	                  d	       d d d        |d d d   }|j                  j                  d   rJ |j                  j                  d   rJ |j	                         j                  j                  d   sJ |j	                         j                  j                  d   rJ |j	                  d
      j                  j                  d   sJ |j	                  d
      j                  j                  d   rJ |j	                  d      j                  j                  d   rJ |j	                  d      j                  j                  d   sJ |j	                  d      j                  j                  d   sJ |j	                  d      j                  j                  d   rJ y # 1 sw Y   xY w)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jjl||!!.111CaC1Ho""$||!!.111jjo<<%%n555||!!.111jjo||!!.111ggll3<<%%n555||!!.111 H]]:S1 	JJsO	 ss??((888??((888{{}%%++N;;;;;=))//???{{3((..~>>>;;s#,,22>BBB;;s#,,22>BBB{{3((..~>>>{{3((..~>>>;;s#,,22>BBBB%	 	s   ?L&&L0N)r@   r   r   r   r   r   r   r   r   ,  s    *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      sB      /
   9VN VNr-C? -Cr   