
    d3                     p   d Z ddlZddlZddlmZ ddlZddlm	Z
 ddlmZ ddlmZ d Zej        d             Zej        d             Zej        d	             Zej        d
             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                   Z! G d dej"                  Z# G d dej$                  Z% G d dej&                  Z' G d dej(                  Z) G d  d!ej*                  Z+ G d" d#ej,                  Z- G d$ d%ej.                  Z/ G d& d'ej0                  Z1 G d( d)ej2                  Z3 G d* d+ej4                  Z5 G d, d-ej6                  Z7 G d. d/ej8                  Z9 G d0 d1ej:                  Z; G d2 d3ej<                  Z= G d4 d5ej>                  Z? G d6 d7ej@                  ZAdS )8aj  
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)is_bool_dtypeBooleanDtype)basec                  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   ,   )npnan     _/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/extension/test_boolean.py	make_datar      s;    %=1x'4-"*<<xG4QV-WWr   c                      t                      S Nr   r   r   r   dtyper      s    >>r   c                 F    t          j        t                      |           S )Nr   )pdarrayr   r   s    r   datar   $   s    8IKKu----r   c                 R    t          j        t          j        d          |           S )Nd   r   )r   r   r
   onesr   s    r   data_for_twosr   )   s    8BGCLL....r   c                 F    t          j        t          j        dg|           S )NTr   r   r   r
   r   r   s    r   data_missingr   .   s    8RVTN%0000r   c                 2    t          j        g d|           S )N)TTFr   )r   r   r   s    r   data_for_sortingr    3   s    8'''u5555r   c                 H    t          j        dt          j        dg|           S NTFr   r   r   s    r   data_missing_for_sortingr#   8   s     8T265)7777r   c                      d S )Nc                 :    | t           j        u o|t           j        u S r   r   NA)xys     r   <lambda>zna_cmp.<locals>.<lambda>@   s    RU
1qBEz r   r   r   r   r   na_cmpr+   =   s     211r   c                      t           j        S r   r&   r   r   r   na_valuer-   C   s	    5Lr   c           	      \    d}d}t           j        }t          j        |||||||g|           S r"   )r
   r   r   r   )r   banas       r   data_for_groupingr2   H   s7    AA	B8Q2r1a+59999r   c                       e Zd ZdS )	TestDtypeN__name__
__module____qualname__r   r   r   r4   r4   P           Dr   r4   c                       e Zd ZdS )TestInterfaceNr5   r   r   r   r;   r;   T   r9   r   r;   c                       e Zd ZdS )TestConstructorsNr5   r   r   r   r=   r=   X   r9   r   r=   c                       e Zd ZdS )TestGetitemNr5   r   r   r   r?   r?   \   r9   r   r?   c                       e Zd ZdS )TestSetitemNr5   r   r   r   rA   rA   `   r9   r   rA   c                       e Zd ZdS )	TestIndexNr5   r   r   r   rC   rC   d   r9   r   rC   c                       e Zd ZdS )TestMissingNr5   r   r   r   rE   rE   h   r9   r   rE   c                        e Zd ZddhZd
 fd	ZefdZej        	                    d           fd            Z
ej        	                    d           fd	            Z xZS )TestArithmeticOps__sub____rsub__Nc                     d }|                     d                              d          dv rt          }t                                          ||||           d S )N_r)powtruedivfloordivexc)striplstripNotImplementedErrorsupercheck_opnameselfsop_nameotherrQ   	__class__s        r   rV   zTestArithmeticOps.check_opnameo   sZ    ==$$S))-KKK%CQC88888r   c                    ||| j         v rCd}t          j        t          |          5   |||           d d d            n# 1 swxY w Y   d S  |||          }|                     |||          }|dv r|                    d          }nH|dv rD|                     |                    t                    ||          }|                    d          }|dk    r!t          j        ||	                                <   | 
                    ||           d S t          j        |          5   |||           d d d            d S # 1 swxY w Y   d S )Nznumpy boolean subtract)match)__floordiv____rfloordiv____pow____rpow____mod____rmod__Int8)__truediv____rtruediv__Float64rb   )
implementspytestraises	TypeError_combineastypefloatr
   r   isnaassert_equal)	rX   objopr[   rZ   rQ   msgresultexpecteds	            r   	_check_opzTestArithmeticOps._check_opw   s   ;$/))/]9C888 # #BsENNN# # # # # # # # # # # # # # #RU^^F}}S%44H    $??622;;;  ==E):):E2FF#??955*$$*,&'fh/////s##  3                 s#   AA
A(EE	EzInconsistency between floordiv and divmod; we raise for floordiv but not for divmod. This matches what we do for non-masked bool dtype.)reasonc                 L    t                                          ||           d S r   )rU   test_divmod_series_array)rX   r   r   r\   s      r   rz   z*TestArithmeticOps.test_divmod_series_array   s%    
 	((}=====r   c                 J    t                                          |           d S r   )rU   test_divmod)rX   r   r\   s     r   r|   zTestArithmeticOps.test_divmod   s#    
 	D!!!!!r   r   )r6   r7   r8   ri   rV   rT   rw   rj   markxfailrz   r|   __classcell__r\   s   @r   rG   rG   l   s        Z(J9 9 9 9 9 9 6I        D [Q   > > > >	 > [Q   " " " "	 " " " " "r   rG   c                         e Zd Zd fd	Z xZS )TestComparisonOpsNc                 R    t                                          |||d            d S )NrP   )rU   rV   rW   s        r   rV   zTestComparisonOps.check_opname   s*    QD99999r   r   )r6   r7   r8   rV   r   r   s   @r   r   r      s=        : : : : : : : : : :r   r   c                       e Zd ZdS )TestReshapingNr5   r   r   r   r   r      r9   r   r   c                   $    e Zd ZdZd Zd Zd ZdS )TestMethodsbooleanc                     t          j        |d          \  }}t          j        g dt          j                  }|                    ddg          }t          j        ||           |                     ||           d S )NT)use_na_sentinel)r   r   r      r   r   r   r   r   )	r   	factorizer
   r   intptaketmassert_numpy_array_equalassert_extension_array_equal)rX   r2   labelsuniquesexpected_labelsexpected_uniquess         r   test_factorizezTestMethods.test_factorize   s    ,'8$OOO(#:#:#:"'JJJ,111a&99
#FO<<<))'3CDDDDDr   c                    t          j        ddgd          }|\  }}t          |                              ||g          }|rt          j        |          }|                    |          dk    sJ |                    |d          dk    sJ |                    |          dk    sJ |                    |d          d	k    sJ |                    |                    ddg                    }t          j        ddgt          j                  }t          j
        ||           t          j        ddg          }|                    ||
          dk    sJ d S )NTFr   r   r   right)sider      )sorter)r   r   type_from_sequenceSeriessearchsortedr   r
   r   r   r   )	rX   r    	as_seriesr/   r0   arrru   rv   r   s	            r   test_searchsortedzTestMethods.test_searchsorted   sn   8T5MCCC1#$$33QF;; 	!)C..C""a''''00A5555""a''''00A5555!!#((Aq6"2"2338QF"'222
#FH555 1a&!!,,Qv,>>!CCCCCCr   c                 l   |                                 dk    sJ |                                dk    sJ |                    g d          }|                                 dk    sJ |                                dk    sJ |                                 dk    sJ |                                dk    sJ d S )Nr   r   )r   r   r   r   r   r   r   )argmaxargminr   )rX   r    r#   r   s       r   test_argmin_argmaxzTestMethods.test_argmin_argmax   s      &&((A----&&((A----  $$%7%7%788{{}}!!!!{{}}!!!! (..00A5555'..00A555555r   N)r6   r7   r8   _combine_le_expected_dtyper   r   r   r   r   r   r   r      sM        !*E E ED D D.6 6 6 6 6r   r   c                       e Zd ZdS )TestCastingNr5   r   r   r   r   r      r9   r   r   c                       e Zd ZdZd Zej                            dddg          d             Zd Z	d Z
d	 Zd
 Zd Zd Zej                            dddg          d             ZdS )TestGroupbyzw
    Groupby-specific tests are overridden because boolean only has 2
    unique values, base tests uses 3 groups.
    c                 H   t          j        g d|d          }|                    d          j        j        d         }|                    d          j        j        d         }t          j        |j        |j        j	                   t          j
        |j        |           d S )N)Br   NNAr   r   r   r   r   r   r   )r   	DataFramegroupbygrouper	groupingsr   r   grouping_vectorr   valuesr   )rX   r2   dfgr1gr2s        r   test_grouping_grouperz!TestGroupby.test_grouping_grouper   s    \777>OPP
 
 jjoo%/2jjoo%/2
#C$7EEE
'(;=NOOOOOr   as_indexTFc                    t          j        g d|d          }|                    d|          j                                        }t          j        |d          \  }}|rGt          j        |d          }t          j        dd	g|d
          }|                     ||           d S t          j        |dd	gd          }| 	                    ||           d S )Nr   r   r   r      r   r   r   r   )r   Tsortname      @      ?r   indexr   )r   r   )
r   r   r   r   meanr   Indexr   assert_series_equalassert_frame_equal)	rX   r   r2   r   ru   rK   r   r   rv   s	            r   test_groupby_extension_aggz&TestGroupby.test_groupby_extension_agg   s    \ 5 5 5<MNNOOC(335::<<\"3$???
7 	6HW3///Ey#s5sCCCH$$VX66666|'c
$C$CDDH##FH55555r   c                    t          j        g d|d          }|j        g d         }|                    d          }|                    d                              ddi          }|                     ||           |                    d                              d          }|                     ||           |                    d                                          }|                     ||           d S )Nr   r   )r   r   r   r   r   first)r   r   iloc	set_indexr   aggr   r   )rX   r2   r   rv   ru   s        r   test_groupby_agg_extensionz&TestGroupby.test_groupby_agg_extension	  s    \ 5 5 5<MNNOO7999%%%c**C$$c7^44111C$$W--111C&&((11111r   c                 P   t          j        g d|d          }|                    dd          j                                        }t          j        |d          \  }}t          j        |d          }t          j        ddg|d	
          }|                     ||           d S )Nr   r   r   Fr   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )rX   r2   r   ru   rK   r   rv   s          r   test_groupby_extension_no_sortz*TestGroupby.test_groupby_extension_no_sort  s    \ 5 5 5<MNNOOCe,,.3355< 1>>>5S)))9c3Zu3???  22222r   c                 .   ||                                           }t          j        g d|d          }|                    d          j                            t                    }t          j        g dd          }|                     ||           d S )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )	rp   r   r   r   r   	transformlenr   r   )rX   r2   validr   ru   rv   s         r    test_groupby_extension_transformz,TestGroupby.test_groupby_extension_transform"  s    !#4#9#9#;#;";<\e<<==C",,S119___3777  22222r   c                    t          j        g d|d          }|                    dd                              |           |                    dd          j                            |           |                    dd                              |           |                    dd          j                            |           d S )Nr   r   r   F)
group_keysr   )r   r   r   applyr   r   )rX   r2   groupby_apply_opr   s       r   test_groupby_extension_applyz(TestGroupby.test_groupby_extension_apply+  s    \ 5 5 5<MNNOO


35
))//0@AAA


35
))+112BCCC


35
))//0@AAA


35
))+112BCCCCCr   c                    t          j        g d|d          }|                    d          j                            d           }t          j        |j        j        g d         j        |j        j        ddg         j        |j        j        dd	g         j        gt          j        g d
d          d          }| 	                    ||           d S )Nr   r   r   c                     | j         S r   )r   )r(   s    r   r*   z9TestGroupby.test_groupby_apply_identity.<locals>.<lambda>4  s    17 r   )r   r      r   r   r      r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   rX   r2   r   ru   rv   s        r   test_groupby_apply_identityz'TestGroupby.test_groupby_apply_identity2  s    \ 5 5 5<MNNOOC"(():):;;9	)))$*	1a&!'	1a&!'
 (9993///
 
 
 	  22222r   c                 0   t          j        g d|g dd          }|                    d                                          j        }|j        j        rt          j        ddg          }nt          j        dg          }t          j	        ||           d S )Nr   )r   r   r   r   r   r   r   )r   r   Cr   r   r   )
r   r   r   sumcolumnsr   _is_numericr   r   assert_index_equalr   s        r   test_in_numeric_groupbyz#TestGroupby.test_in_numeric_groupby@  s    \***&*** 
 
 C$$&&.". 	'xc
++HHxH
fh/////r   	min_countr   
   c                    t          j        g d|d          }|                    d                              |          }|dk    r[t          j        dt          j        g dd	          it          j        g d
d                    }t          j        ||           d S t          j        dt          j        t           j        gdz  d	          it          j        g d
d                    }t          j        ||           d S )Nr   r   r   )r   r   r   )r   r   r   Int64r   r   r   )r   r   )	r   r   r   r   r   r   r   r   r'   )rX   r2   r   r   ru   rv   s         r   test_groupby_sum_mincountz%TestGroupby.test_groupby_sum_mincountQ  s   \ 5 5 5<MNNOOC$$y$99>>|bhyyy8889hyyys333  H !&(33333|bhw{':::;hyyys333  H !&(33333r   N)r6   r7   r8   __doc__r   rj   r}   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r      s         
P P P [Z$776 6 8762 2 2 3 3 33 3 3D D D3 3 30 0 0" [[1b'224 4 324 4 4r   r   c                       e Zd Zd ZdS )TestNumericReducec                    |dk    rD t          ||                      } t          |                    d          |                      }nG t          ||          |          } t          |                    d          |          |          }t          j        |          rt          j        }n|dv rt          |          }t          j        ||           d S )Ncountfloat64skipna)minmax)	getattrrn   r
   isnanr   r'   boolr   assert_almost_equalrX   rY   rZ   r   ru   rv   s         r   check_reducezTestNumericReduce.check_reduced  s    g(WQ((**F<wqxx	22G<<>>HH(WQ((777F<wqxx	22G<<FKKKH8H 	&uHH&&H~~H
vx00000r   N)r6   r7   r8   r  r   r   r   r   r   c  s#        1 1 1 1 1r   r   c                       e Zd ZdS )TestBooleanReduceNr5   r   r   r   r  r  s  r9   r   r  c                       e Zd ZdS )TestPrintingNr5   r   r   r   r  r  w  r9   r   r  c                       e Zd ZdS )TestUnaryOpsNr5   r   r   r   r  r  {  r9   r   r  c                   `    e Zd Zd Zej                            dddg          d             ZdS )TestAccumulationc                     t          ||          |          } t          t          j        |                    d                    |          |          }t	          j        ||d           |dv rt          |          sJ d S d S )Nr   r   F)check_dtype)cummincummax)r   r   r   rn   r   r   r   r   s         r   check_accumulatez!TestAccumulation.check_accumulate  s    $G$$F333C729QXXi%8%8997CC6RRR
vxUCCCC*** ((((( +*((r   r   TFc                     d S r   r   )rX   r   all_numeric_accumulationsr   s       r   test_accumulate_series_raisesz.TestAccumulation.test_accumulate_series_raises  s    r   N)r6   r7   r8   r  rj   r}   r   r  r   r   r   r	  r	    sU        ) ) ) [Xe}55  65  r   r	  c                       e Zd ZdS )TestParsingNr5   r   r   r   r  r    r9   r   r  c                       e Zd ZdS )Test2DCompatNr5   r   r   r   r  r    r9   r   r  )Br   numpyr
   rj   pandas.core.dtypes.commonr   pandasr   pandas._testing_testingr   pandas.core.arrays.booleanr   pandas.tests.extensionr   r   fixturer   r   r   r   r    r#   r+   r-   r2   BaseDtypeTestsr4   BaseInterfaceTestsr;   BaseConstructorsTestsr=   BaseGetitemTestsr?   BaseSetitemTestsrA   BaseIndexTestsrC   BaseMissingTestsrE   BaseArithmeticOpsTestsrG   BaseComparisonOpsTestsr   BaseReshapingTestsr   BaseMethodsTestsr   BaseCastingTestsr   BaseGroupbyTestsr   BaseNumericReduceTestsr   BaseBooleanReduceTestsr  BasePrintingTestsr  BaseUnaryOpsTestsr  BaseAccumulateTestsr	  BaseParsingTestsr  Dim2CompatTestsr  r   r   r   <module>r2     s*         3 3 3 3 3 3           3 3 3 3 3 3 ' ' ' ' ' 'X X X    . . . / / / 1 1 1 6 6 6 8 8 8 2 2 2
    : : :	 	 	 	 	# 	 	 		 	 	 	 	D+ 	 	 		 	 	 	 	t1 	 	 		 	 	 	 	$' 	 	 		 	 	 	 	$' 	 	 		 	 	 	 	# 	 	 		 	 	 	 	$' 	 	 	9" 9" 9" 9" 9"3 9" 9" 9"x: : : : :3 : : :	 	 	 	 	D+ 	 	 	26 26 26 26 26$' 26 26 26j	 	 	 	 	$' 	 	 	u4 u4 u4 u4 u4$' u4 u4 u4p1 1 1 1 13 1 1 1 	 	 	 	 	3 	 	 		 	 	 	 	4) 	 	 		 	 	 	 	4) 	 	 	
 
 
 
 
t/ 
 
 
	 	 	 	 	$' 	 	 		 	 	 	 	4' 	 	 	 	 	r   