
    4i1                        S 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"\RF                  RI                  S
5      \RF                  RI                  S5      \RF                  RI                  S5      /r%S r&S r'S r(\RR                  " \\\\\\\\\\\/S9S 5       r*\RR                  S 5       r+\RR                  S 5       r,\RR                  S 5       r-\RR                  S 5       r.\RR                  S 5       r/\RR                  S 5       r0\RR                  S 5       r1 " S S\!Rd                  5      r3\RF                  Ri                  S\Rj                  " SS/5      \Rj                  " SS/5      \Rj                  " S S!/5      /5      S" 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            
      R    SSSS[         R                  SS[         R                  SS/
$ )	N            
      c   d   pdNA     d/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/tests/extension/test_masked.py	make_datar$   ?   s%    q!Qr2ruub#66r"   c            
      R    SSSS[         R                  SS[         R                  SS/
$ )	N皙?皙?g333333?g?      ?g?g#@g      $@r   r!   r"   r#   make_float_datar)   C   s%    c3sCTBBr"   c                  l    SS/S-  [         R                  /-   SS/-   [         R                  /-   SS/-   $ )NTFr   )npnanr!   r"   r#   make_bool_datar-   G   s9    %=1x'4-7266(BdE]RRr"   )paramsc                 "    U R                  5       $ N)param)requests    r#   dtyper3   K   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:   ^   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   r   )r8   r   r9   r+   onesr7   s    r#   data_for_twosr=   i   sD    zzSxx51188BGGBK!O511r"   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_missingr@   p   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&   r'           r7   r6   )TTF)r   r   r   )r8   r   r9   r7   s    r#   data_for_sortingrC   y   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&   rB   r7   r6   TFr   r   r?   r7   s    r#   data_missing_for_sortingrE      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   )xys     r#   <lambda>na_cmp.<locals>.<lambda>   s    RUU
1qBEEz1r"   r!   r!   r"   r#   na_cmprL      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&   rB   r'   r6   TFr   r   r   r7   )r8   r   r    r9   )r3   r6   acnas        r#   data_for_groupingrQ      sj    zzS	s		B88Q21.e<<r"   c                     ^  \ rS rSrSr\R                  " SS9S 5       r\R                  R                  SSS/5      S	 5       r
S
 rS rS\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U 4S jrSrU =r$ )TestMaskedArrays   booleanT)autousec                 *    UR                   (       a   eg r0   )_supports_2d)selfr3   r2   s      r#   skip_if_doesnt_support_2d*TestMaskedArrays.skip_if_doesnt_support_2d   s     %%%%%r"   	na_actionNignorec                     UR                  S US9nUR                  [        5       :X  a&  U(       a  UR                  S[        R
                  S9nOUR                  5       n[        R                  " XE5        g )Nc                     U $ r0   r!   )rH   s    r#   rJ   +TestMaskedArrays.test_map.<locals>.<lambda>   s    Ar"   r\   float64)r3   na_value)mapr3   r
   to_numpyr+   r,   tmassert_numpy_array_equal)rY   r@   r\   using_nan_is_naresultexpecteds         r#   test_mapTestMaskedArrays.test_map   s^    !!+!C/O#,,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OYU(       d+  [        R                  " T[
        R                  T/[        S9nO'[        R                  " T[        R                  T/5      n[        R                  " X45        g )Nr   c                    > T$ r0   r!   )rH   zeros    r#   rJ   <TestMaskedArrays.test_map_na_action_ignore.<locals>.<lambda>   s    r"   r]   ra   r6   Fr7   )rd   r3   r8   r+   r9   r   r    objectr,   rf   rg   )rY   rE   rh   ri   rj   ro   s        @r#   test_map_na_action_ignore*TestMaskedArrays.test_map_na_action_ignore   s    '*)--n-Q#))..#5xxu 5VDH xxruud 36BH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__)rf   	get_dtypeAttributeErrorr8   striplstripNotImplementedError	TypeError)rY   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R                  S:X  a  US;   a  UR                  S5      nU$ )Nr6   )__mod____rmod__Int8)rf   r|   r8   astype)rY   r   r   r   pointwise_resultsdtyperj   s          r#   _cast_pointwise_result'TestMaskedArrays._cast_pointwise_result   sC    c"#;;#  
 $??62r"   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)rY   r:   r=   r2   r   	__class__s        r#   r   )TestMaskedArrays.test_divmod_series_array   sN    ::??c!;;$$) % D
 %(=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rY   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   getattrisnar   r   r    rf   assert_almost_equal)rY   r   r   r   	cmp_dtypealtri   rj   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                 "   [        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  aM  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skewkurtsemFloat64)r   r   )Int64UInt64Int32r   UInt32r   r6   r   rU   )sumprodznot supposed to reach this)
r   r3   namer   r   r   r   r   r8   r   )rY   arrr   r   r   s        r#   _get_expected_reduction_dtype.TestMaskedArrays._get_expected_reduction_dtype  s   #))$$		IH G OO!ID C &		I@ ? YY--		I< ; %SYY// ())>>t  6 / 	 6 + 'syy11 ())>>t  ( ! 	 (  YY^^s".(%	  O+ ,--~~V4  !	     <==899r"   c                     g)NTr!   r   s      r#   _supports_accumulation'TestMaskedArrays._supports_accumulation5  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  a  O-US;   a  UR                  nOUS:X  a  US S nO[        U S35      e[        X5      " US9n[        R                  " [        R                  " [        UR                  S5      U5      " US9SS95      n[        R                  U[        R                   " U5      '   UR                  U5      n["        R$                  " Xg5        g )N@          UUIntIIntFr6   )cummincummaxrU   Float32cumprodz4Float32 precision lead to large differences with op z and skipna=cumsum)r   r      z not supportedr   rb   r   r7   )is_windows_or_32bitr3   itemsizer   
startswithr8   r   r   r   r   r   Seriesr9   r   r    r+   isnanrf   assert_series_equal)rY   r   r   r   lengthexpected_dtyperi   rj   s           r#   check_accumulate!TestMaskedArrays.check_accumulate8  s     99%%*99>>$$S))#F8_NYY^^&&s++"6(^NYY^^&&s++ !YYNYY^^s"..!*#&vhY&7i+?FKKFwi P$X'
 h,, YYN	!cr(C%	&@AA&f599HH

9-w7vF
 (*uu(#$??>2
v0r"   c                 $   > [         TU ]  U5        g r0   )r   8test_loc_setitem_with_expansion_preserves_ea_index_dtype)rY   r:   r2   r   s      r#   r   ITestMaskedArrays.test_loc_setitem_with_expansion_preserves_ea_index_dtypek  s    HNr"   r!   )__name__
__module____qualname____firstlineno___combine_le_expected_dtyper   fixturerZ   r   parametrizerk   rr   r   strr   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__)r   s   @r#   rS   rS      s   !*^^D!& "& [[[4*:;6 <6
6"c >ryy 3 4 
1		 1C 1 16&# &t &P")) c d 11BII 11 11T 11fO Or"   rS   r   TFr   r   r(   g       @c                     [         R                  [         R                  /nU R                  U5      nUR                  U R                  :X  d   e[	        S U 5       5      (       d   eg )Nc              3   D   #    U  H  o[         R                  L v   M     g 7fr0   r   ).0rH   s     r#   	<genexpr>Ltest_cast_pointwise_result_all_na_respects_original_dtype.<locals>.<genexpr>w  s     *6aBEEz6s    )r   r    r   r3   r   )r   valuesri   s      r#   9test_cast_pointwise_result_all_na_respects_original_dtyper   o  sR    
 eeRUU^F''/F<<399$$$*6*****r"   )7__doc__numpyr+   r   pandas.compatr   r   pandas.compat.numpyr   pandas.core.dtypes.commonr   r   r   pandasr   pandas._testing_testingrf   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   filterwarnings
pytestmarkr$   r)   r-   r   r3   r:   r=   r@   rC   rE   rL   rQ   ExtensionTestsrS   r   r9   r   r!   r"   r#   <module>r	     s      /    3	 	 	 (*,C^1CPD  KKC KKJK
KKUV
7CS  ' ' 2 2 - - , , 0 0 2 2
 = =$HOt** HOV 	BHHdE]#RXXq!f%5rxxc
7KL++r"   