
    bMh8                        d Z ddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZmZ ddlZddlmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZm Z  dd	l!m"Z"  e            re	 pe Z#ej$        %                    d
          ej$        %                    d          ej$        %                    d          gZ&d Z'd Z(d Z) ej*        eeeeeeee eeeg          d             Z+ej*        d             Z,ej*        d             Z-ej*        d             Z.ej*        d             Z/ej*        d             Z0ej*        d             Z1ej*        d             Z2 G d de"j3                  Z4 G d de"j5                  Z6dS )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                      t          t          dd                    t          j        gz   t          t          dd                    z   t          j        gz   ddgz   S )N   	   
   b   c   d   )listrangepdNA     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/extension/test_masked.py	make_datar#   @   sH    aw&eBmm)<)<<wF"cRRr!   c                      t          t          j        ddd                    t          j        gz   t          t          j        ddd                    z   t          j        gz   ddgz   S )N皙?g?r   g#@g#@g      $@)r   nparanger   r   r    r!   r"   make_float_datar(   D   sf    RYsC%%&&5'	
ryC%%
&
&	' 5'	 +		r!   c                  b    ddgdz  t           j        gz   ddgdz  z   t           j        gz   ddgz   S )NTF   ,   )r&   nanr    r!   r"   make_bool_datar-   N   s;    %=1x'4-"*<<xG4QV-WWr!   )paramsc                 *    |                                  S N)param)requests    r"   dtyper3   R   s      ==??r!   c                     | j         dk    rt                      }n(| j         dk    rt                      }nt                      }t	          j        ||           S )Nfbr3   )kindr(   r-   r#   r   array)r3   datas     r"   r:   r:   e   sT    zS  	s		{{8D&&&&r!   c                     | j         dk    r(t          j        t          j        d          |           S t          j        t          j        d          dz  |           S )Nr6   r   r7      )r8   r   r9   r&   onesr7   s    r"   data_for_twosr>   p   sN    zSxE22228BGCLL1$E2222r!   c                     | j         dk    r"t          j        t          j        dg|           S | j         dk    r"t          j        t          j        dg|           S t          j        t          j        dg|           S )Nr5   r%   r7   r6   Tr   r8   r   r9   r   r&   r,   r7   s    r"   data_missingrA   w   sm    zSxE2222	s		xe44448RUAJe,,,,r!   c                     | j         dk    rt          j        g d|           S | j         dk    rt          j        g d|           S t          j        g d|           S )Nr5   )r%   皙?        r7   r6   )TTF)r   r<   r   )r8   r   r9   r7   s    r"   data_for_sortingrE      sj    zSxu5555	s		x+++599998IIIU++++r!   c                     | j         dk    r#t          j        dt          j        dg|           S | j         dk    r#t          j        dt          j        dg|           S t          j        dt          j        d	g|           S )
Nr5   r%   rD   r7   r6   TFr   r   r@   r7   s    r"   data_missing_for_sortingrG      su    zSxbeS)7777	s		xrvu-U;;;;8QqM////r!   c                      d S )Nc                 :    | t           j        u o|t           j        u S r0   )r   r   )xys     r"   <lambda>zna_cmp.<locals>.<lambda>   s    RU
1qBEz r!   r    r    r!   r"   na_cmprM      s     211r!   c           
          | j         dk    rd}d}d}n| j         dk    rd}d}|}nd}d	}d
}t          j        }t          j        ||||||||g|           S )Nr5   r%   rD   rC   r6   TFr   r   r<   r7   )r8   r   r   r9   )r3   r6   acnas        r"   data_for_groupingrR      sz    zS	s			B8Q2r1aA.e<<<<r!   c                       e Zd Zej                            dddg          d             Zd Zd Zde	fdZ
 fd	Z fd
Zdej        de	defdZdej        de	defdZde	defdZdej        de	defdZdej        de	defdZ xZS )TestMaskedArrays	na_actionNignorec                     |                     d |          }|j        t                      k    r"|                    dt          j                  }n|                                }t          j        ||           d S )Nc                     | S r0   r    )rJ   s    r"   rL   z+TestMaskedArrays.test_map.<locals>.<lambda>   s    A r!   rU   float64)r3   na_value)mapr3   r
   to_numpyr&   r,   tmassert_numpy_array_equal)selfrA   rU   resultexpecteds        r"   test_mapzTestMaskedArrays.test_map   st    !!++!CC//#,,9rv,NNHH#,,..H
#FH55555r!   c                 *   |d         |                     fdd          }|j        j        dk    r)t          j        dt
          j        dgt                    }n!t          j        t          j        g          }t          j
        ||           d S )Nr<   c                     S r0   r    )rJ   zeros    r"   rL   z<TestMaskedArrays.test_map_na_action_ignore.<locals>.<lambda>   s     r!   rV   rY   r6   Fr7   )r\   r3   r8   r&   r9   r   r   objectr,   r^   r_   )r`   rG   ra   rb   rf   s       @r"   test_map_na_action_ignorez*TestMaskedArrays.test_map_na_action_ignore   s    '*)--nnnn-QQ#).#55xu 5VDDDHHxrvt 455H
#FH55555r!   c                    	 t          j        |          }n$# t          $ r t          j        |          }Y nw xY w|j        dk    r>|                    d                              d          dv rt          S |dv rt          S d S d S )Nr6   _r)powtruedivfloordiv)__sub____rsub__)r^   	get_dtypeAttributeErrorr8   striplstripNotImplementedError	TypeError)r`   op_nameobjotherr3   s        r"   _get_expected_exceptionz(TestMaskedArrays._get_expected_exception   s    	(L%%EE 	( 	( 	(L''EEE	( :}}S!!((--1OOO**333  4ts    88rw   c                 R   t          j        |          }|}|dv r|                    d          S |j        dv r|dv r|t	          j                    5  t	          j        ddt                     |                    t          j
                  }d d d            n# 1 swxY w Y   |                    d          }n|                    |          }n|j        d	k    r|d
v r|                    d          }n]|dv rY|                     |          }|                     |                    t                    ||          }|                    d          }|dk    r: t          ||          |          }	t          j
        ||	                                <   n|                    |          }|S )N)eqnelegeltgtbooleaniu)__rtruediv____truediv____div__rV   zDowncasting object dtype arrays)categoryFloat64r6   )__floordiv____rfloordiv____pow____rpow____mod____rmod__Int8)r   r   r   )r^   rq   astyper8   warningscatch_warningsfilterwarningsFutureWarningfillnar&   r,   get_op_from_name_combinefloatgetattrisna)
r`   rw   rx   ry   pointwise_resultsdtyperb   filledopra   s
             r"   _cast_pointwise_resultz'TestMaskedArrays._cast_pointwise_result   s   c""#:::??9---;$DDD,.. 5 5+ 9!.   
 &__RV44F5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 "==33 $??622[C    $??622;;; **733==E):):E2FF#??955*$$.g..u55*,&'  v..Hs   <BBBc                     |j         j        dk    r5t          j                            d          }|                    |           t                                          ||           d S )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)r`   r:   r>   r2   r   	__class__s        r"   r   z)TestMaskedArrays.test_divmod_series_array   si    :?c!!;$$) %  D
 %%%((}=====r!   c                      |d          \  }}|j         j        dk    rd| _        nt          | _        t	                                          |           d S )Nr<   r6   r   )r3   r8   _combine_le_expected_dtyperg   r   test_combine_le)r`   data_repeated
orig_data1
orig_data2r   s       r"   r   z TestMaskedArrays.test_combine_le
  s[    !.q!1!1
J C''.7D++ /5D+.....r!   serreturnc                 X    |dv r%|j         j        dk    rt          j        d           dS )Nanyallr6   z-Tested in tests/reductions/test_reductions.pyr   T)r3   r8   r   skipr`   r   rw   s      r"   _supports_reductionz$TestMaskedArrays._supports_reduction  s4    n$$3)>)>KNOOOOtr!   skipnac                 .   d}|j         j        dk    r|j         j        }n|j         j        dk    r|dv rd}|                                                    |          }|dk    r1 t          ||                      } t          ||                      }nl t          ||          |          } t          ||          |          }|s6|                                                                r|dvrt          j	        }t          j        ||           d S )	Nint64r5   r6   minmaxboolcountr   r   )r3   r8   numpy_dtypedropnar   r   r   r   r   r   r^   assert_almost_equal)r`   r   rw   r   	cmp_dtypealtra   rb   s           r"   check_reducezTestMaskedArrays.check_reduce  s     	9>S   	-IIY^s"".(("	
 jjll!!),,g*WS'**,,F,wsG,,..HH*WS'**&999F,wsG,,F;;;H !chhjjnn.. !7.3P3P5
vx00000r!   c                 F   t          |j                  r|j        j        }n|dv rd}n|dv r|j        j        }n|j        dv r|j        j        }nt          |j                  r#t	                      r	t
          r	|rt          sdnd}nt          |j                  r#t	                      r	t
          r	|rt          sdnd}nc|j        j        d	k    rD|dv rd}nL|d
v rd}nE|dv r#t	                      r	t
          r	|rt          sdnd}nt          d          t          d          |S )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   rv   )r`   arrrw   r   r   s        r"   _get_expected_reduction_dtypez.TestMaskedArrays._get_expected_reduction_dtype4  s   #)$$ &	:	II@@@!II&&	IIY---	II$SY// 	: ())3AIO 	 I 'sy11 	: ())3AIO 	 I Y^s""BBB%		N**%		O++ ,--!7E!MS!!GG !	 	   <===8999r!   c                     dS )NTr    r   s      r"   _supports_accumulationz'TestMaskedArrays._supports_accumulation^  s    tr!   c           
      (   d}t           r|j        j        dk    sd}|j        j                            d          rd| }nh|j        j                            d          rd| }nC|j        j                            d          r|j        }n|j        j        d	k    r|d
v rd}nd| }|dk    r"|dk    r|rt          j        d| d|            |dk    r t          ||          |          }t          j
        t          j         t          |                    d          |          |          |                    }t          j        ||           d S |dv r t          ||          |          }t          j
        t          j         t          |                    d          |          |          |j                            }t          j        ||           d S |dk    r t          |d d         |          |          }t          j
        t          j         t          |d d                             d          |          |          |                    }t          j        ||           d S t          | d          )N@          UUIntIIntFr6   )cummincummaxr   Float32cumprodz4Float32 precision lead to large differences with op z and skipna=cumsumr   rZ   r7   )r   r      z not supported)is_windows_or_32bitr3   itemsizer   
startswithr8   r   r   r   r   Seriesr9   r   r^   assert_series_equalru   )r`   r   rw   r   lengthexpected_dtypera   rb   s           r"   check_accumulatez!TestMaskedArrays.check_accumulatea  s     	 9%**9>$$S)) 	0,F__NNY^&&s++ 
	0+6^^NNY^&&s++ 	0 !YNNY^s""...!*!/vY&&7i+?+?F+?K'w ' '$' '  
 h*WS'**&999Fy;GCJJy117;;6JJJ(   H "6844444,,,*WS'**&999Fy;GCJJy117;;6JJJ)   H "6844444	!!/WS"Xw//v>>>Fy@GCHOOI66@@OOO(   H "6844444 &&@&@&@AAAr!   )__name__
__module____qualname__r   r   parametrizerc   rh   rz   strr   r   r   r   r   r   r   r   r   r   r   __classcell__)r   s   @r"   rT   rT      s       [[4*:;;6 6 <;66 6 6  ".c . . . .`> > > > >/ / / / /ry 3 4    
1	 1C 1 1 1 1 16(# (t ( ( ( (T") c d    <BBI <B <BT <B <B <B <B <B <B <B <Br!   rT   c                       e Zd ZdS )Test2DCompatN)r   r   r   r    r!   r"   r   r     s        Dr!   r   )7__doc__r   numpyr&   r   pandas.compatr   r   pandas.compat.numpyr   pandas.core.dtypes.commonr   r   r   pandasr   pandas._testing_testingr^   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   rM   rR   ExtensionTestsrT   Dim2CompatTestsr   r    r!   r"   <module>r     s                 / . . . . .                    3 3 3 3 3 3       	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ( ' ' ' ' '**,,C^1CPD  KC  KJKK
KUVV
S S S  X X X      ' ' ' 3 3 3 - - - , , , 0 0 0 2 2 2
 = = =$rB rB rB rB rBt* rB rB rBj	 	 	 	 	4' 	 	 	 	 	r!   