
    Mh8                     >   S r SSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJr  SSKrSSKJr  SSKJr  SSKJrJr  SSKJrJrJrJrJrJrJrJ r   SS	K!J"r"  \" 5       =(       a    \	(       + =(       d    \(       + r#\RH                  RK                  S
5      \RH                  RK                  S5      \RH                  RK                  S5      /r&S r'S r(S r)\RT                  " \\\\\\\\ \\\/S9S 5       r+\RT                  S 5       r,\RT                  S 5       r-\RT                  S 5       r.\RT                  S 5       r/\RT                  S 5       r0\RT                  S 5       r1\RT                  S 5       r2 " S S\"Rf                  5      r4 " S S\"Rj                  5      r6g)aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

    N)IS64is_platform_windows)np_version_gt2)is_float_dtypeis_signed_integer_dtypeis_unsigned_integer_dtype)BooleanDtype)Float32DtypeFloat64Dtype)	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtype
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtype)basez9ignore:invalid value encountered in divide:RuntimeWarningz)ignore:Mean of empty slice:RuntimeWarningz4ignore:overflow encountered in reduce:RuntimeWarningc                      [        [        SS5      5      [        R                  /-   [        [        SS5      5      -   [        R                  /-   SS/-   $ )N   	   
   b   c   d   )listrangepdNA     T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/extension/test_masked.py	make_datar#   @   sB    aw&eBm)<<wF"cRRr!   c                      [        [        R                  " SSS5      5      [        R                  /-   [        [        R                  " SSS5      5      -   [        R                  /-   SS/-   $ )N皙?g?r   g#@g#@g      $@)r   nparanger   r   r    r!   r"   make_float_datar(   D   sb    RYYsC%&55'	
ryyC%
&	' 55'	 +		r!   c                  r    SS/S-  [         R                  /-   SS/S-  -   [         R                  /-   SS/-   $ )NTF   ,   )r&   nanr    r!   r"   make_bool_datar-   N   s?    %=1x'4-"*<<xG4QV-WWr!   )paramsc                 "    U R                  5       $ N)param)requests    r"   dtyper3   R   s      ==?r!   c                     U R                   S:X  a  [        5       nO%U R                   S:X  a  [        5       nO
[        5       n[        R
                  " XS9$ )Nfbr3   )kindr(   r-   r#   r   array)r3   datas     r"   r:   r:   e   s@    zzS 	s	{88D&&r!   c                     U R                   S:X  a)  [        R                  " [        R                  " S5      U S9$ [        R                  " [        R                  " S5      S-  U S9$ )Nr6   r   r7      )r8   r   r9   r&   onesr7   s    r"   data_for_twosr>   p   sE    zzSxxE2288BGGCL1$E22r!   c                     U R                   S:X  a%  [        R                  " [        R                  S/U S9$ U R                   S:X  a%  [        R                  " [        R
                  S/U S9$ [        R                  " [        R                  S/U S9$ )Nr5   r%   r7   r6   Tr   r8   r   r9   r   r&   r,   r7   s    r"   data_missingrA   w   se    zzSxxE22	s	xxe4488RUUAJe,,r!   c                     U R                   S:X  a  [        R                  " / SQU S9$ U R                   S:X  a  [        R                  " / SQU S9$ [        R                  " / SQU S9$ )Nr5   )r%   皙?        r7   r6   )TTF)r   r<   r   )r8   r   r9   r7   s    r"   data_for_sortingrE      sN    zzSxxu55	s	xx+59988IU++r!   c                 &   U R                   S:X  a&  [        R                  " S[        R                  S/U S9$ U R                   S:X  a&  [        R                  " S[        R
                  S/U S9$ [        R                  " S[        R                  S	/U S9$ )
Nr5   r%   rD   r7   r6   TFr   r   r@   r7   s    r"   data_missing_for_sortingrG      sm    zzSxxbeeS)77	s	xxrvvu-U;;88QqM//r!   c                      S $ )Nc                 X    U [         R                  L =(       a    U[         R                  L $ r0   )r   r   )xys     r"   <lambda>na_cmp.<locals>.<lambda>   s    RUU
1qBEEz1r!   r    r    r!   r"   na_cmprN      s
     21r!   c           
          U R                   S:X  a  SnSnSnOU R                   S:X  a  SnSnUnOSnS	nS
n[        R                  n[        R                  " XXDX"X/U S9$ )Nr5   r%   rD   rC   r6   TFr   r   r<   r7   )r8   r   r   r9   )r3   r6   acnas        r"   data_for_groupingrS      sj    zzS	s		B88Q21.e<<r!   c                   P  ^  \ rS rSr\R
                  R                  SSS/5      S 5       rS rS r	S\
4S	 jrU 4S
 jrU 4S jrS\R                  S\
S\4S jrS\R                  S\
S\4S jrS\
S\4S jrS\R                  S\
S\4S jrS\R                  S\
S\4S jrSrU =r$ )TestMaskedArrays   	na_actionNignorec                     UR                  S US9nUR                  [        5       :X  a  UR                  S[        R
                  S9nOUR                  5       n[        R                  " X45        g )Nc                     U $ r0   r    )rJ   s    r"   rL   +TestMaskedArrays.test_map.<locals>.<lambda>   s    Ar!   rW   float64)r3   na_value)mapr3   r
   to_numpyr&   r,   tmassert_numpy_array_equal)selfrA   rW   resultexpecteds        r"   test_mapTestMaskedArrays.test_map   s\    !!+!C/#,,9rvv,NH#,,.H
##F5r!   c                 <  ^ US   mUR                  U4S jSS9nUR                  R                  S:X  a+  [        R                  " S[
        R                  S/[        S9nO'[        R                  " T[        R                  T/5      n[        R                  " X#5        g )Nr<   c                    > T$ r0   r    )rJ   zeros    r"   rL   <TestMaskedArrays.test_map_na_action_ignore.<locals>.<lambda>   s    r!   rX   r\   r6   Fr7   )r_   r3   r8   r&   r9   r   r   objectr,   ra   rb   )rc   rG   rd   re   rj   s       @r"   test_map_na_action_ignore*TestMaskedArrays.test_map_na_action_ignore   sx    '*)--n-Q#))..#5xxu 5VDHxxrvvt 45H
##F5r!   c                     [         R                  " U5      nUR                  S:X  a7  UR	                  S5      R                  S5      S;   a  [        $ US;   a  [        $ g g ! [         a    [         R                  " U5      n Njf = f)Nr6   _r)powtruedivfloordiv)__sub____rsub__)ra   	get_dtypeAttributeErrorr8   striplstripNotImplementedError	TypeError)rc   op_nameobjotherr3   s        r"   _get_expected_exception(TestMaskedArrays._get_expected_exception   sz    	(LL%E
 ::}}S!((-1OO**33    	(LL'E	(s   A    BBr}   c                 ,   [         R                  " U5      nUnUS;   a  UR                  S5      $ UR                  S;   a  US;   aj  [        R
                  " 5          [        R                  " SS[        S9  UR                  [        R                  5      nS S S 5        WR                  S5      nU$ UR                  U5      n U$ UR                  S	:X  a  US
;   a  UR                  S5      nOMUS;   aG  U R                  U5      nU R                  UR                  [        5      X85      nUR                  S5      nUS:X  a1  [        X!5      " U5      n	[        R                  XiR                  5       '   U$ UR                  U5      nU$ ! , (       d  f       N= f)N)eqnelegeltgtbooleaniu)__rtruediv____truediv____div__rX   zDowncasting object dtype arrays)categoryFloat64r6   )__floordiv____rfloordiv____pow____rpow____mod____rmod__Int8)r   r   r   )ra   rw   astyper8   warningscatch_warningsfilterwarningsFutureWarningfillnar&   r,   get_op_from_name_combinefloatgetattrisna)
rc   r}   r~   r   pointwise_resultsdtypere   filledoprd   s
             r"   _cast_pointwise_result'TestMaskedArrays._cast_pointwise_result   sh   c"#::??9--;;$DD,,.++ 9!.
 &__RVV4F / "==3< 7 $??626 5 [[C   $??62;; **73==E):EF#??95*$ .u5*,&&'   v.HK /.s   :F
Fc                    > UR                   R                  S:X  a.  [        R                  R	                  SS9nUR                  U5        [        TU ]  X5        g )Nr6   zInconsistency between floordiv and divmod; we raise for floordiv but not for divmod. This matches what we do for non-masked bool dtype.reason)r3   r8   pytestmarkxfailapplymarkersupertest_divmod_series_array)rc   r:   r>   r2   r   	__class__s        r"   r   )TestMaskedArrays.test_divmod_series_array   sN    ::??c!;;$$) % D
 %(=r!   c                    > U" S5      u  p#UR                   R                  S:X  a  SU l        O[        U l        [        TU ]  U5        g )Nr<   r6   r   )r3   r8   _combine_le_expected_dtyperl   r   test_combine_le)rc   data_repeated
orig_data1
orig_data2r   s       r"   r    TestMaskedArrays.test_combine_le
  sC    !.q!1
  C'.7D+ /5D+.r!   serreturnc                 l    US;   a.  UR                   R                  S:w  a  [        R                  " SS9  g)Nanyallr6   z-Tested in tests/reductions/test_reductions.pyr   T)r3   r8   r   skiprc   r   r}   s      r"   _supports_reduction$TestMaskedArrays._supports_reduction  s)    n$3)>KKNOr!   skipnac                 "   SnUR                   R                  S:X  a  UR                   R                  nO"UR                   R                  S:X  a  US;   a  SnUR                  5       R	                  U5      nUS:X  a!  [        X5      " 5       n[        XR5      " 5       nO^[        X5      " US9n[        XR5      " US9nU(       d9  UR                  5       R                  5       (       a  US;  a  [        R                  n[        R                  " Xg5        g )	Nint64r5   r6   minmaxboolcountr   r   )r3   r8   numpy_dtypedropnar   r   r   r   r   r   ra   assert_almost_equal)rc   r   r}   r   	cmp_dtypealtrd   re   s           r"   check_reduceTestMaskedArrays.check_reduce  s     	99>>S  		--IYY^^s".("	
 jjl!!),gS*,Fs,.HS*&9Fs,F;Hchhjnn..7.3P55
v0r!   c                 6   [        UR                  5      (       a  UR                  R                  nU$ US;   a  SnU$ US;   a  UR                  R                  nU$ UR                  S;   a  UR                  R                  nU$ [        UR                  5      (       a4  [	        5       (       a  [
        (       a  U(       a  [        (       d  SnU$ SnU$ [        UR                  5      (       a4  [	        5       (       a  [
        (       a  U(       a  [        (       d  SnU$ SnU$ UR                  R                  S	:X  aW  US;   a  SnU$ US
;   a  SnU$ US;   a2  [	        5       (       a  [
        (       a  U(       a  [        (       d  SOSnU$ [        S5      e[        S5      e)N)meanmedianvarstdskewr   )r   r   )Int64UInt64Int32r   UInt32r   r6   r   r   )sumprodznot supposed to reach this)
r   r3   namer   r   r   r   r   r8   r|   )rc   arrr}   r   r   s        r"   _get_expected_reduction_dtype.TestMaskedArrays._get_expected_reduction_dtype4  s   #))$$		IL K @@!IH G &		ID C YY--		I@ ? %SYY// ())>>t  : 3 	 : / 'syy11 ())>>t  , % 	 , ! YY^^s"BB%	  N*%	  O+ ,--~~V4  !	     <==899r!   c                     g)NTr    r   s      r"   _supports_accumulation'TestMaskedArrays._supports_accumulation^  s    r!   c           	         Sn[         (       a  UR                  R                  S:X  d  SnUR                  R                  R	                  S5      (       a  SU 3nOUR                  R                  R	                  S5      (       a  SU 3nO_UR                  R                  R	                  S5      (       a  UR                  nO(UR                  R
                  S	:X  a  US
;   a  SnOSU 3nWS:X  a)  US:X  a#  U(       a  [        R                  " SU SU 35        US:X  al  [        X5      " US9n[        R                  " [        R                  " [        UR                  S5      U5      " US9US95      n[        R                  " Xg5        g US;   av  [        X5      " US9n[        R                  " [        R                  " [        UR                  S5      U5      " US9UR                  S95      n[        R                  " Xg5        g US:X  as  [        US S U5      " US9n[        R                  " [        R                  " [        US S R                  S5      U5      " US9US95      n[        R                  " Xg5        g [        U S35      e)N@          UUIntIIntFr6   )cummincummaxr   Float32cumprodz4Float32 precision lead to large differences with op z and skipna=cumsumr   r]   r7   )r   r      z not supported)is_windows_or_32bitr3   itemsizer   
startswithr8   r   r   r   r   Seriesr9   r   ra   assert_series_equalr{   )rc   r   r}   r   lengthexpected_dtyperd   re   s           r"   check_accumulate!TestMaskedArrays.check_accumulatea  s.     99%%*99>>$$S))#F8_NYY^^&&s++"6(^NYY^^&&s++ !YYNYY^^s"..!*#&vhY&7i+?FKKFwi P$X'
 hS*&9FyyCJJy17;6J(H ""64,,S*&9FyyCJJy17;6J))H ""64	!S"Xw/v>FyyCHOOI6@O(H ""64 &	&@AAr!   )r   )__name__
__module____qualname____firstlineno__r   r   parametrizerf   rm   r   strr   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)r   s   @r"   rU   rU      s    [[[4*:;6 <66".c .`>/ryy 3 4 
1		 1C 1 16(# (t (T")) c d <BBII <B <BT <B <Br!   rU   c                       \ rS rSrSrg)Test2DCompati  r    N)r   r   r  r  r  r    r!   r"   r  r    s    r!   r  )7__doc__r   numpyr&   r   pandas.compatr   r   pandas.compat.numpyr   pandas.core.dtypes.commonr   r   r   pandasr   pandas._testing_testingra   pandas.core.arrays.booleanr	   pandas.core.arrays.floatingr
   r   pandas.core.arrays.integerr   r   r   r   r   r   r   r   pandas.tests.extensionr   r   r   r   
pytestmarkr#   r(   r-   fixturer3   r:   r>   rA   rE   rG   rN   rS   ExtensionTestsrU   Dim2CompatTestsr  r    r!   r"   <module>r     s      /    3	 	 	 (*,C^1CPD  KKC KKJK
KKUV
SX  ' ' 3 3 - - , , 0 0 2 2
 = =$rBt** rBj	4'' 	r!   